Index: tests/searchsort.cfa
===================================================================
--- tests/searchsort.cfa	(revision 95d0a5db33a507584580dc37674209d5be2faa98)
+++ tests/searchsort.cfa	(revision 2a092d640cb7b13557e11e3a2f70f2d6e20115c8)
@@ -21,10 +21,10 @@
 
 int main( void ) {
-	const unsigned int size = 10;
+	const int size = 10;
 	int iarr[size];
 
 	sout | nlOff;										// turn off auto newline
 
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		iarr[i] = size - i;
 		sout | iarr[i] | ", ";
@@ -34,9 +34,9 @@
 	// ascending sort/search by changing < to >
 	qsort( iarr, size );
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		sout | iarr[i] | ", ";
 	} // for
 	sout | nl;
-	for ( i; 0u ~ size ) {		// C version
+	for ( i; 0 ~ size ) {		// C version
 		int key = size - i;
 		int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
@@ -45,10 +45,10 @@
 	sout | nl;
 
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		int * v = bsearch( size - i, iarr, size );
 		sout | size - i | ':' | *v | ", ";
 	} // for
 	sout | nl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		unsigned int posn = bsearch( size - i, iarr, size );
 		sout | size - i | ':' | iarr[posn] | ", ";
@@ -63,16 +63,21 @@
 	sout | nl;
 	{
-		int ?<?( int x, int y ) { return x > y; }
-		qsort( iarr, size );
-		for ( i; 0u ~ size ) {
+		// redefinition of ?<? can't overlap the loop controls:
+		{
+			int (*?<?)(int, int) = ?>?;
+			qsort( iarr, size );
+		}
+		for ( i; 0 ~ size ) {
 			sout | iarr[i] | ", ";
 		} // for
 		sout | nl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
+			int (*?<?)(int, int) = ?>?;
 			int * v = bsearch( size - i, iarr, size );
 			sout | size - i | ':' | *v | ", ";
 		} // for
 		sout | nl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
+			int (*?<?)(int, int) = ?>?;
 			unsigned int posn = bsearch( size - i, iarr, size );
 			sout | size - i | ':' | iarr[posn] | ", ";
@@ -82,5 +87,5 @@
 
 	double darr[size];
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		darr[i] = size - i + 0.5;
 		sout | darr[i] | ", ";
@@ -88,14 +93,14 @@
 	sout | nl;
 	qsort( darr, size );
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		sout | darr[i] | ", ";
 	} // for
 	sout | nl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		double * v = bsearch( size - i + 0.5, darr, size );
 		sout | size - i + 0.5 | ':' | *v | ", ";
 	} // for
 	sout | nl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		unsigned int posn = bsearch( size - i + 0.5, darr, size );
 		sout | size - i + 0.5 | ':' | darr[posn] | ", ";
@@ -106,5 +111,5 @@
 	int ?<?( S t1, S t2 ) { return t1.i < t2.i && t1.j < t2.j; }
 	ofstream & ?|?( ofstream & os, S v ) { return os | v.i | ' ' | v.j; }
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		sarr[i].i = size - i;
 		sarr[i].j = size - i + 1;
@@ -113,9 +118,9 @@
 	sout | nl;
 	qsort( sarr, size );
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		sout | sarr[i] | ", ";
 	} // for
 	sout | nl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		S temp = { size - i, size - i + 1 };
 		S * v = bsearch( temp, sarr, size );
@@ -123,5 +128,5 @@
 	} // for
 	sout | nl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		S temp = { size - i, size - i + 1 };
 		unsigned int posn = bsearch( temp, sarr, size );
@@ -130,15 +135,15 @@
 	sout | nl;
 	{
-		unsigned int getKey( const S & s ) { return s.j; }
-		for ( i; 0u ~ size ) {
+		int getKey( const S & s ) { return s.j; }
+		for ( i; 0 ~ size ) {
 			sout | sarr[i] | ", ";
 		} // for
 		sout | nl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
 			S * v = bsearch( size - i + 1, sarr, size );
 			sout | size - i + 1 | ':' | *v | ", ";
 		} // for
 		sout | nl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
 			unsigned int posn = bsearch( size - i + 1, sarr, size );
 			sout | size - i + 1 | ':' | sarr[posn] | ", ";
