Index: tests/.expect/zero_one-ERR1.txt
===================================================================
--- tests/.expect/zero_one-ERR1.txt	(revision 7959e56ee51966b45243fdf7c184c30462ae78f8)
+++ tests/.expect/zero_one-ERR1.txt	(revision 7959e56ee51966b45243fdf7c184c30462ae78f8)
@@ -0,0 +1,6 @@
+zero_one.cfa:80:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: p
+  Name: o
+
Index: tests/.expect/zero_one.txt
===================================================================
--- tests/.expect/zero_one.txt	(revision bbbff10c7298866851953ec442ea30d05e91b2a8)
+++ tests/.expect/zero_one.txt	(revision 7959e56ee51966b45243fdf7c184c30462ae78f8)
@@ -3,2 +3,12 @@
 It's a Number!
 2 2
+0 0
+42 42
+0 0
+1 1
+42 42
+1 1
+zero true
+zero true
+one false
+one false
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision bbbff10c7298866851953ec442ea30d05e91b2a8)
+++ tests/Makefile.am	(revision 7959e56ee51966b45243fdf7c184c30462ae78f8)
@@ -354,4 +354,8 @@
 	-cp ${test} ${abspath ${@}}
 
+zero_one-ERR1 : zero_one.cfa ${CFACCBIN}
+	${CFACOMPILE_SYNTAX} -DERR1
+	-cp ${test} ${abspath ${@}}
+
 ctrl-flow/loop_else : ctrl-flow/loop_else.cfa ${CFACCBIN}
 	${CC} ${AM_CFLAGS} -Wno-superfluous-else $< -o $@ 
Index: tests/zero_one.cfa
===================================================================
--- tests/zero_one.cfa	(revision bbbff10c7298866851953ec442ea30d05e91b2a8)
+++ tests/zero_one.cfa	(revision 7959e56ee51966b45243fdf7c184c30462ae78f8)
@@ -39,7 +39,65 @@
 }
 
+void testCompats() {
+    zero_t zero = 0;
+    one_t one = 1;
+
+    int x = 0;
+	int xx = zero;
+
+	sout | x | xx;
+
+	x = xx = 42;
+	sout | x | xx;
+
+	x = 0;
+	xx = zero;
+	sout | x | xx;
+
+	int y = 1;
+	int yy = one;
+
+	sout | y | yy;
+
+	y = yy = 42;
+	sout | y | yy;
+
+	y = 1;
+	yy = one;
+	sout | y | yy;
+
+	void z_helper( int * p, zero_t z ) {
+		p = z;  // expect z not reported unused here; expect no missing cast from -Wint-conversion
+		sout | "zero" | (bool) (p == 0);
+	}
+
+	void z_call( int * p, zero_t z ) {
+		z_helper(p, z);
+	}
+
+	void o_helper( int * p, one_t o ) {
+	  #ifdef ERR1
+		p = o;
+	  #else
+		(void) x;  (void) o;
+	  #endif
+		sout | "one" | (bool) (p == 0);
+	}
+
+	void o_call( int * p, one_t o ) {
+		o_helper(p, o);
+	}
+
+	z_call( &x, 0 );
+	z_call( &x, zero );
+
+	o_call( &x, 1 );
+	o_call( &x, one );
+}
+
 int main() {
 	testOverloads();
 	testInitAssignQueryIncrement();
+	testCompats();
 	return 0;
 }
