Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision 7641b6c36b40524a09d0d16b7c7db8adccd57ced)
+++ src/ResolvExpr/ConversionCost.cc	(revision b8b075cd4b3ca8eb5bf8c39b674a07f4869cbdb6)
@@ -292,9 +292,14 @@
 					cost = Cost::safe;
 				}
-			} else {  // xxx - this discards qualifiers from consideration -- reducing qualifiers is a safe conversion; is this right?
+			} else {
 				int assignResult = ptrsAssignable( pointerType->base, destAsPtr->base, env );
 				PRINT( std::cerr << " :: " << assignResult << std::endl; )
-				if ( assignResult > 0 && pointerType->get_base()->get_qualifiers() <= destAsPtr->get_qualifiers() ) {
-					cost = Cost::safe;
+				if ( assignResult > 0 && tq1 <= tq2 ) {
+					// xxx - want the case where qualifiers are added to be more expensive than the case where qualifiers are the same. Is 1 safe vs. 2 safe correct?
+					if ( tq1 == tq2 ) {
+						cost = Cost::safe;
+					} else if ( tq1 < tq2 ) {
+						cost = Cost::safe+Cost::safe;
+					}
 				} else if ( assignResult < 0 ) {
 					cost = Cost::unsafe;
