Index: src/ResolvExpr/CastCost.cc
===================================================================
--- src/ResolvExpr/CastCost.cc	(revision bd8540001c298d12d68dabcd274a24ed5a4dfb7a)
+++ src/ResolvExpr/CastCost.cc	(revision 52f85e0c522e3914bc6c3fa98cf315bdf8c09347)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 06:57:43 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Mon Oct 05 14:48:45 2015
-// Update Count     : 5
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Feb  2 15:34:36 2016
+// Update Count     : 7
 //
 
@@ -69,5 +69,6 @@
 		PointerType *destAsPointer = dynamic_cast< PointerType* >( dest );
 		if ( destAsPointer && basicType->isInteger() ) {
-			cost = Cost( 1, 0, 0 );
+			//cost = Cost( 1, 0, 0 );
+			cost = Cost::infinity;
 		} else {
 			ConversionCost::visit( basicType );
@@ -87,10 +88,12 @@
 					cost = Cost( 0, 0, 1 );
 				} else if ( castResult < 0 ) {
-					cost = Cost( 1, 0, 0 );
+					cost = Cost::infinity;
+					//cost = Cost( 1, 0, 0 );
 				} // if
 			} // if
 		} else if ( BasicType *destAsBasic = dynamic_cast< BasicType* >( dest ) ) {
 			if ( destAsBasic->isInteger() ) {
-				cost = Cost( 1, 0, 0 );
+				//cost = Cost( 1, 0, 0 );
+				cost = Cost::infinity;
 			} // if
 		}
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision bd8540001c298d12d68dabcd274a24ed5a4dfb7a)
+++ src/ResolvExpr/Resolver.cc	(revision 52f85e0c522e3914bc6c3fa98cf315bdf8c09347)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 12:17:01 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 24 17:33:54 2015
-// Update Count     : 178
+// Last Modified On : Tue Feb  9 21:57:52 2016
+// Update Count     : 179
 //
 
@@ -322,5 +322,5 @@
 												BasicType::SignedInt);
 				} else {
-					DeclarationWithType * decl = lookupId(n);
+					DeclarationWithType * decl = lookupId( n );
 					initContext = decl->get_type();
 				}
@@ -344,6 +344,5 @@
 					if ( PointerType * pt = dynamic_cast< PointerType *>( newExpr->get_results().front() ) ) {
 						if ( isCharType( pt->get_base() ) ) {
-							// strip cast if we're initializing a char[] with a char *, e.g.
-							// char x[] = "hello";
+							// strip cast if we're initializing a char[] with a char *, e.g.  char x[] = "hello";
 							CastExpr *ce = dynamic_cast< CastExpr * >( newExpr );
 							singleInit->set_value( ce->get_arg() );
Index: src/examples/sum.c
===================================================================
--- src/examples/sum.c	(revision bd8540001c298d12d68dabcd274a24ed5a4dfb7a)
+++ src/examples/sum.c	(revision 52f85e0c522e3914bc6c3fa98cf315bdf8c09347)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb  5 16:47:44 2016
-// Update Count     : 139
+// Last Modified On : Sat Feb  6 11:57:42 2016
+// Update Count     : 182
 //
 
@@ -33,59 +33,60 @@
 
 // Required to satisfy sumable as char does not have addition.
-// const char 0;
-// char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion
-// char ++?( char *op ) { *op += 1; return *op; }
-// char ?++( char *op ) { char temp = *op; *op += 1; return temp; }
+const char 0;
+char ?+?( char t1, char t2 ) { return (int)t1 + t2; }	// cast forces integer addition, otherwise recursion
+char ?+=?( char *t1, char t2 ) { *t1 = *t1 + t2; return *t1; }
+char ++?( char *t ) { *t += 1; return *t; }
+char ?++( char *t ) { char temp = *t; *t += 1; return temp; }
 
 int main( void ) {
 	const int low = 5, High = 15, size = High - low;
 	ofstream *sout = ofstream_stdout();
-#if 0
 
-	char s = 0, a[size];
-	char v = low;
+	char s = 0, a[size], v = low;
 	for ( int i = 0; i < size; i += 1, v += 1 ) {
 		s += v;
 		a[i] = v;
-	}
+	} // for
 	sout | "sum from " | low | " to " | High | " is "
 		 | (int)sum( size, a ) | ", check " | (int)s | endl;
 
-	int s = 0, a[size];
-	int v = low;
+	int s = 0, a[size], v = low;
 	for ( int i = 0; i < size; i += 1, v += 1 ) {
 		s += (int)v;
 		a[i] = (int)v;
-	}
+	} // for
 	sout | "sum from " | low | " to " | High | " is "
 		 | sum( size, (int *)a ) | ", check " | (int)s | endl;
 
-	float s = 0.0, a[size];
-	float v = low / 10.0;
+	float s = 0.0, a[size], v = low / 10.0;
 	for ( int i = 0; i < size; i += 1, v += 0.1f ) {
 		s += (float)v;
 		a[i] = (float)v;
-	}
+	} // for
 	sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is "
 		 | sum( size, (float *)a ) | ", check " | (float)s | endl;
-#endif
-	double s = 0, a[size];
-	double v = low / 10.0;
 
+	double s = 0, a[size], v = low / 10.0;
 	for ( int i = 0; i < size; i += 1, v += 0.1 ) {
 		s += (double)v;
 		a[i] = (double)v;
-	}
+	} // for
 	sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is "
 		 | sum( size, (double *)a ) | ", check " | (double)s | endl;
 
-	// struct S { int i, j; } sarr[size];
-	// struct S 0 = { 0, 0 };
-	// struct S 1 = { 1, 1 };
-	// S ?+?( S t1, S t2 ) { S s = { t1.i + t1.j, t2.i + t2.j }; return s; }
-	// S ?+=?( S *t1, S t2 ) { *t1 = *t1 + t2; return *t1; }
-	// S ++?( S *t ) { *t += 1; return *t; }
-	// S ?++( S *t ) { S temp = *t; *t += 1; return temp; }
-	// sum( size, sarr );
+	struct S { int i, j; } 0 = { 0, 0 }, 1 = { 1, 1 };
+	S ?+?( S t1, S t2 ) { S s = { t1.i + t2.i, t1.j + t2.j }; return s; }
+	S ?+=?( S *t1, S t2 ) { *t1 = *t1 + t2; return *t1; }
+	S ++?( S *t ) { *t += 1; return *t; }
+	S ?++( S *t ) { S temp = *t; *t += 1; return temp; }
+	ofstream * ?|?( ofstream * os, S v ) { return os | v.i | ' ' | v.j; }
+
+	S s = 0, a[size], v = { low, low };
+	for ( int i = 0; i < size; i += 1, v += (S)1 ) {
+		s += (S)v;
+		a[i] = (S)v;
+	} // for
+	sout | "sum from " | low | " to " | High | " is "
+		 | sum( size, (S *)a ) | ", check " | (S)s | endl;
 } // main
 
Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision bd8540001c298d12d68dabcd274a24ed5a4dfb7a)
+++ src/libcfa/iostream.c	(revision 52f85e0c522e3914bc6c3fa98cf315bdf8c09347)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb  1 14:20:30 2016
-// Update Count     : 60
+// Last Modified On : Wed Feb 10 15:48:46 2016
+// Update Count     : 66
 //
 
@@ -19,4 +19,5 @@
 #include <stdio.h>
 #include <string.h>										// strlen
+#include <float.h>										// DBL_DIG, LDBL_DIG
 #include <complex.h>									// creal, cimag
 }
@@ -72,5 +73,5 @@
 ostype * ?|?( ostype *os, double d ) {
 	char buffer[32];
-	return write( os, buffer, sprintf( buffer, "%g", d ) );
+	return write( os, buffer, sprintf( buffer, "%.*lg", DBL_DIG, d ) );
 } // ?|?
 
@@ -78,5 +79,5 @@
 ostype * ?|?( ostype *os, long double d ) {
 	char buffer[32];
-	return write( os, buffer, sprintf( buffer, "%Lg", d ) );
+	return write( os, buffer, sprintf( buffer, "%.*Lg", LDBL_DIG, d ) );
 } // ?|?
 
Index: src/libcfa/stdlib.c
===================================================================
--- src/libcfa/stdlib.c	(revision bd8540001c298d12d68dabcd274a24ed5a4dfb7a)
+++ src/libcfa/stdlib.c	(revision 52f85e0c522e3914bc6c3fa98cf315bdf8c09347)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:10:29 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb  5 15:41:24 2016
-// Update Count     : 128
+// Last Modified On : Wed Feb 10 15:45:56 2016
+// Update Count     : 140
 //
 
@@ -23,5 +23,4 @@
 #include <string.h>										// memset
 #include <malloc.h>										// malloc_usable_size
-#include <stdio.h>
 #include <math.h>										// fabsf, fabs, fabsl
 #include <complex.h>									// _Complex_I, cabsf, cabs, cabsl
@@ -106,51 +105,50 @@
 long int ato( const char * ptr ) {
 	long int li;
-	if ( sscanf( ptr, "%ld", &li ) == EOF ) {};			// check return code
+	if ( sscanf( ptr, "%ld", &li ) == EOF ) {}			// check return code
 	return li;
 }
 unsigned long int ato( const char * ptr ) {
 	unsigned long int uli;
-	if ( sscanf( ptr, "%lu", &uli ) == EOF ) {};		// check return code
+	if ( sscanf( ptr, "%lu", &uli ) == EOF ) {}			// check return code
 	return uli;
 }
 long long int ato( const char * ptr ) {
 	long long int lli;
-	if ( sscanf( ptr, "%lld", &lli ) == EOF ) {};		// check return code
+	if ( sscanf( ptr, "%lld", &lli ) == EOF ) {}		// check return code
 	return lli;
 }
 unsigned long long int ato( const char * ptr ) {
 	unsigned long long int ulli;
-	if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {};		// check return code
+	if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {}		// check return code
 	return ulli;
 }
 float ato( const char * ptr ) {
 	float f;
-	if ( sscanf( ptr, "%f", &f ) == EOF ) {};			// check return code
+	if ( sscanf( ptr, "%f", &f ) == EOF ) {}			// check return code
 	return f;
 }
 double ato( const char * ptr ) {
 	double d;
-	if ( sscanf( ptr, "%lf", &d ) == EOF ) {};			// check return code
+	if ( sscanf( ptr, "%lf", &d ) == EOF ) {}			// check return code
 	return d;
 }
 long double ato( const char * ptr ) {
 	long double ld;
-	printf( "FRED " );
-	if ( sscanf( ptr, "%.32Lf", &ld ) == EOF ) {};		// check return code
+	if ( sscanf( ptr, "%Lf", &ld ) == EOF ) {}			// check return code
 	return ld;
 }
 float _Complex ato( const char * ptr ) {
 	float re, im;
-	if ( sscanf( ptr, "%g%g", &re, &im ) == EOF ) {};	// check return code
+	if ( sscanf( ptr, "%g%gi", &re, &im ) == EOF ) {}	// check return code
 	return re + im * _Complex_I;
 }
 double _Complex ato( const char * ptr ) {
 	double re, im;
-	if ( sscanf( ptr, "%.16lg%.16lg", &re, &im ) == EOF ) {}; // check return code
+	if ( sscanf( ptr, "%lf%lfi", &re, &im ) == EOF ) {} // check return code
 	return re + im * _Complex_I;
 }
 long double _Complex ato( const char * ptr ) {
 	long double re, im;
-	if ( sscanf( ptr, "%.32Lg%.32Lg", &re, &im ) == EOF ) {}; // check return code
+	if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {}	// check return code
 	return re + im * _Complex_I;
 }	
