Index: src/examples/io.c
===================================================================
--- src/examples/io.c	(revision 540de412b77591cc4fdbb16932060ef6229a3f1d)
+++ src/examples/io.c	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
@@ -11,6 +11,6 @@
 // Created On       : Wed Mar  2 16:56:02 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr 13 23:03:14 2016
-// Update Count     : 22
+// Last Modified On : Sat Apr 30 08:34:13 2016
+// Update Count     : 27
 // 
 
@@ -52,5 +52,5 @@
 		 | sepDisable | fc | dc | ldc | sepEnable | endl		// complex without separator
 		 | sepOn | s1 | sepOff | s2 | endl						// local separator removal
-		 | s1 | "" | s2 | endl;									// C string withou separator
+		 | s1 | "" | s2 | endl;									// C string without separator
 	sout | endl;
 
@@ -70,4 +70,5 @@
 		| "£" | 27
 		| "¥" | 27
+		| "¡" | 27
 		| "¿" | 27
 		| "«" | 27
Index: src/libcfa/fstream
===================================================================
--- src/libcfa/fstream	(revision 540de412b77591cc4fdbb16932060ef6229a3f1d)
+++ src/libcfa/fstream	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr 19 20:44:10 2016
-// Update Count     : 84
+// Last Modified On : Thu Apr 28 08:08:04 2016
+// Update Count     : 88
 //
 
@@ -22,6 +22,6 @@
 struct ofstream {
 	void *file;
-	int sepDefault;
-	int sepOnOff;
+	_Bool sepDefault;
+	int sepOnOff;										// FIX ME: type should be _Bool
 	char separator[separateSize];
 }; // ofstream
Index: src/libcfa/fstream.c
===================================================================
--- src/libcfa/fstream.c	(revision 540de412b77591cc4fdbb16932060ef6229a3f1d)
+++ src/libcfa/fstream.c	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 14 17:04:24 2016
-// Update Count     : 176
+// Last Modified On : Mon May 02 15:14:52 2016
+// Update Count     : 187
 //
 
@@ -93,5 +93,4 @@
 int prtfmt( ofstream * os, const char fmt[], ... ) {
     va_list args;
-
     va_start( args, fmt );
     int len = vfprintf( (FILE *)(os->file), fmt, args );
@@ -103,4 +102,6 @@
 	} // if
     va_end( args );
+
+	sepReset( os );										// reset separator
 	return len;
 } // prtfmt
Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision 540de412b77591cc4fdbb16932060ef6229a3f1d)
+++ src/libcfa/iostream.c	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 14 16:02:09 2016
-// Update Count     : 278
+// Last Modified On : Mon May 02 15:13:55 2016
+// Update Count     : 302
 //
 
@@ -34,5 +34,4 @@
 ostype * ?|?( ostype *os, short int si ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%hd", si );
 	return os;
@@ -42,5 +41,4 @@
 ostype * ?|?( ostype *os, unsigned short int usi ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%hu", usi );
 	return os;
@@ -50,5 +48,4 @@
 ostype * ?|?( ostype *os, int i ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%d", i );
 	return os;
@@ -58,5 +55,4 @@
 ostype * ?|?( ostype *os, unsigned int ui ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%u", ui );
 	return os;
@@ -66,5 +62,4 @@
 ostype * ?|?( ostype *os, long int li ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%ld", li );
 	return os;
@@ -74,5 +69,4 @@
 ostype * ?|?( ostype *os, unsigned long int uli ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%lu", uli );
 	return os;
@@ -82,5 +76,4 @@
 ostype * ?|?( ostype *os, long long int lli ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%lld", lli );
 	return os;
@@ -90,5 +83,4 @@
 ostype * ?|?( ostype *os, unsigned long long int ulli ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%llu", ulli );
 	return os;
@@ -98,5 +90,4 @@
 ostype * ?|?( ostype *os, float f ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%g", f );
 	return os;
@@ -106,5 +97,4 @@
 ostype * ?|?( ostype *os, double d ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%.*lg", DBL_DIG, d );
 	return os;
@@ -114,5 +104,4 @@
 ostype * ?|?( ostype *os, long double ld ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%.*Lg", LDBL_DIG, ld );
 	return os;
@@ -155,5 +144,6 @@
 		// opening delimiters
 		['('] : Open, ['['] : Open, ['{'] : Open,
-		['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
+		['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open,
+		[(unsigned char)'¡'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
 		// closing delimiters
 		[','] : Close, ['.'] : Close, [':'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,
@@ -162,10 +152,9 @@
 		// opening-closing delimiters
 		['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose,
-		['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
+		[' '] : OpenClose, ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
 	}; // mask
 
-	int len = strlen( cp );
-	// null string => no separator
-  if ( len == 0 ) { sepOff( os ); return os; }
+  if ( cp[0] == '\0' ) { sepOff( os ); return os; }		// null string => no separator
+
 	// first character IS NOT spacing or closing punctuation => add left separator
 	unsigned char ch = cp[0];							// must make unsigned
@@ -173,11 +162,15 @@
 		prtfmt( os, "%s", sepGet( os ) );
 	} // if
+
+	// if string starts line, must reset to determine open state because separator is off
+	sepReset( os );										// reset separator
+
 	// last character IS spacing or opening punctuation => turn off separator for next item
-	unsigned int posn = len - 1;
+	unsigned int len = strlen( cp ), posn = len - 1;
 	ch = cp[posn];										// must make unsigned
-	if ( mask[ ch ] == Open || mask[ ch ] == OpenClose ) {
+	if ( sepPrt( os ) && mask[ ch ] != Open && mask[ ch ] != OpenClose ) {
+		sepOn( os );
+	} else {
 		sepOff( os );
-	} else {
-		sepOn( os );
 	} // if
 	return write( os, cp, len );
@@ -187,5 +180,4 @@
 ostype * ?|?( ostype *os, const void *p ) {
 	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	sepReset( os );
 	prtfmt( os, "%p", p );
 	return os;
Index: src/libcfa/stdlib
===================================================================
--- src/libcfa/stdlib	(revision 540de412b77591cc4fdbb16932060ef6229a3f1d)
+++ src/libcfa/stdlib	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:12:35 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 21 07:55:21 2016
-// Update Count     : 95
+// Last Modified On : Wed Apr 27 22:03:29 2016
+// Update Count     : 96
 //
 
@@ -45,5 +45,5 @@
 
 forall( otype T ) T * aligned_alloc( size_t alignment );
-forall( otype T ) T * memalign( size_t alignment );
+forall( otype T ) T * memalign( size_t alignment );		// deprecated
 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment );
 
Index: src/libcfa/stdlib.c
===================================================================
--- src/libcfa/stdlib.c	(revision 540de412b77591cc4fdbb16932060ef6229a3f1d)
+++ src/libcfa/stdlib.c	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:10:29 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 21 07:58:29 2016
-// Update Count     : 165
+// Last Modified On : Thu Apr 28 07:54:21 2016
+// Update Count     : 166
 //
 
@@ -213,6 +213,6 @@
 //---------------------------------------
 
-forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
-[ T, T ] div( T t1, T t2 ) { /* return [ t1 / t2, t1 % t2 ]; */ }
+// forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
+// [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; }
 
 //---------------------------------------
