Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision 478b1d0d00fcef21da956b0b71fcee9f5c7968e4)
+++ src/libcfa/iostream.c	(revision 933dbbdd51fba981922aaec1bce1f186615e9671)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul  6 18:14:17 2017
-// Update Count     : 396
+// Last Modified On : Sun Jul 16 21:12:03 2017
+// Update Count     : 398
 //
 
@@ -125,9 +125,6 @@
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?|?( ostype * os, float _Complex fc ) {
-	os | crealf( fc );
-	_Bool temp = sepDisable( os );						// disable separators within complex value
-	if ( cimagf( fc ) >= 0 ) os | '+';					// negative value prints '-'
-	os | cimagf( fc ) | 'i';
-	sepReset( os, temp );								// reset separator
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%g%+gi", crealf( fc ), cimagf( fc ) );
 	return os;
 } // ?|?
@@ -135,9 +132,6 @@
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?|?( ostype * os, double _Complex dc ) {
-	os | creal( dc );
-	_Bool temp = sepDisable( os );						// disable separators within complex value
-	if ( cimag( dc ) >= 0 ) os | '+';					// negative value prints '-'
-	os | cimag( dc ) | 'i';
-	sepReset( os, temp );								// reset separator
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%.*lg%+.*lgi", DBL_DIG, creal( dc ), DBL_DIG, cimag( dc ) );
 	return os;
 } // ?|?
@@ -145,9 +139,6 @@
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?|?( ostype * os, long double _Complex ldc ) {
-	os | creall( ldc );
-	_Bool temp = sepDisable( os );						// disable separators within complex value
-	if ( cimagl( ldc ) >= 0 ) os | '+';					// negative value prints '-'
-	os | cimagl( ldc ) | 'i';
-	sepReset( os, temp );								// reset separator
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%.*Lg%+.*Lgi", LDBL_DIG, creall( ldc ), LDBL_DIG, cimagl( ldc ) );
 	return os;
 } // ?|?
