Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 8deaf2ba5611c4f7d2516b8e0e6ceee91273c4f0)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 73ac10e1f458e8c55037fb5326876a41ed58a82b)
@@ -1230,5 +1230,5 @@
 
 		// function may return struct or union value, in which case we need to add alternatives
-		// for implicitconversions to each of the anonymous members, must happen after findMinCost
+		// for implicit conversions to each of the anonymous members, must happen after findMinCost
 		// since anon conversions are never the cheapest expression
 		for ( const Alternative & alt : winners ) {
Index: tests/searchsort.c
===================================================================
--- tests/searchsort.c	(revision 8deaf2ba5611c4f7d2516b8e0e6ceee91273c4f0)
+++ tests/searchsort.c	(revision 73ac10e1f458e8c55037fb5326876a41ed58a82b)
@@ -21,8 +21,8 @@
 
 int main( void ) {
-	const unsigned int size = 10;
+	const int size = 10;
 	int iarr[size];
 
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		iarr[i] = size - i;
 		sout | iarr[i] | ", ";
@@ -32,9 +32,9 @@
 	// ascending sort/search by changing < to >
 	qsort( iarr, size );
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		sout | iarr[i] | ", ";
 	} // for
 	sout | endl;
-	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 );
@@ -43,10 +43,10 @@
 	sout | endl;
 
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		int * v = bsearch( size - i, iarr, size );
 		sout | size - i | ':' | *v | ", ";
 	} // for
 	sout | endl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		unsigned int posn = bsearch( size - i, iarr, size );
 		sout | size - i | ':' | iarr[posn] | ", ";
@@ -55,5 +55,5 @@
 
 	// descending sort/search by changing < to >
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		iarr[i] = i + 1;
 		sout | iarr[i] | ", ";
@@ -61,16 +61,22 @@
 	sout | endl;
 	{
-		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 x, int y ) { return x > y; }
+		{
+			int (*?<?)(int, int) = ?>?;
+			qsort( iarr, size );
+		}
+		for ( i; 0 ~ size ) {
 			sout | iarr[i] | ", ";
 		} // for
 		sout | endl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
+			int (*?<?)(int, int) = ?>?;
 			int * v = bsearch( size - i, iarr, size );
 			sout | size - i | ':' | *v | ", ";
 		} // for
 		sout | endl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
+			int (*?<?)(int, int) = ?>?;
 			unsigned int posn = bsearch( size - i, iarr, size );
 			sout | size - i | ':' | iarr[posn] | ", ";
@@ -80,5 +86,5 @@
 
 	double darr[size];
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		darr[i] = size - i + 0.5;
 		sout | darr[i] | ", ";
@@ -86,14 +92,14 @@
 	sout | endl;
 	qsort( darr, size );
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		sout | darr[i] | ", ";
 	} // for
 	sout | endl;
-	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 | endl;
-	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] | ", ";
@@ -104,5 +110,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;
@@ -111,9 +117,9 @@
 	sout | endl;
 	qsort( sarr, size );
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		sout | sarr[i] | ", ";
 	} // for
 	sout | endl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		S temp = { size - i, size - i + 1 };
 		S * v = bsearch( temp, sarr, size );
@@ -121,5 +127,5 @@
 	} // for
 	sout | endl;
-	for ( i; 0u ~ size ) {
+	for ( i; 0 ~ size ) {
 		S temp = { size - i, size - i + 1 };
 		unsigned int posn = bsearch( temp, sarr, size );
@@ -128,15 +134,15 @@
 	sout | endl | endl;
 	{
-		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 | endl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
 			S * v = bsearch( size - i + 1, sarr, size );
 			sout | size - i + 1 | ':' | *v | ", ";
 		} // for
 		sout | endl;
-		for ( i; 0u ~ size ) {
+		for ( i; 0 ~ size ) {
 			unsigned int posn = bsearch( size - i + 1, sarr, size );
 			sout | size - i + 1 | ':' | sarr[posn] | ", ";
