Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision 2a01c9b2889ff03ce2683f454c6a85e073053e02)
+++ libcfa/src/iostream.cfa	(revision 9edf8357e5c2a54aec5f83e78e29ccbbaabd8963)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 23 17:33:32 2020
-// Update Count     : 942
+// Last Modified On : Fri Apr 24 11:48:53 2020
+// Update Count     : 954
 //
 
@@ -598,7 +598,8 @@
 						fmt.wd = 1; \
 						fmt.val = (unsigned long long int)fmt.val >> 2; \
-						printf( "L %llo %d %d '%c' %x\n", fmt.val, fmt.wd, fmt.pc, fmt.base, fmt.all ); \
 						fmt2.wd = 1; \
-						fmt2.val = ((msig & 0x3) << 1) + 1; \
+						fmt2.val = ((msig & 0x3) << 1) + ((lsig & 0x8000000000000000U) != 0); \
+						if ( fmt2.val > 1 && fmt.flags.pc && fmt.pc > 0 ) fmt.pc -= 1; \
+						/* printf( "L %llo %llo %llo %llo %d %d '%c' %x\n", msig, lsig, fmt.val, fmt2.val, fmt.wd, fmt.pc, fmt.base, fmt.all ); */ \
 						(ostype &)(os | fmt | "" | fmt2); \
 						sepOff( os ); \
@@ -609,5 +610,5 @@
 						fmt2.flags.pc = true; fmt2.pc = 21; \
 						if ( ! fmt.flags.nobsdp ) { if ( fmt.pc < fmt.wd ) fmt.wd -= 1; else fmt.pc -= 1; } \
-						fmt2.val = lsig & 0x7fffffffffffffff; \
+						fmt2.val = lsig & 0x7fffffffffffffffU; \
 						(ostype &)(os | fmt2); \
 					} else { \
@@ -616,9 +617,9 @@
 						if ( ! fmt.flags.nobsdp ) { if ( fmt.pc < fmt.wd ) fmt.wd -= 1; else fmt.pc -= 1; } \
 						fmt2.wd = 1; \
-						fmt2.val = ((msig & 0x3) << 1) + 1; \
+						fmt2.val = ((msig & 0x3) << 1) + (lsig & 0x8000000000000000U != 0); \
 						(ostype &)(os | fmt | "" | fmt2); \
 						sepOff( os ); \
 						fmt2.wd = 21; \
-						fmt2.val = lsig & 0x7fffffffffffffff; \
+						fmt2.val = lsig & 0x7fffffffffffffffU; \
 						(ostype &)(os | fmt2); \
 					} /* if */ \
Index: tests/manipulatorsOutput3.cfa
===================================================================
--- tests/manipulatorsOutput3.cfa	(revision 2a01c9b2889ff03ce2683f454c6a85e073053e02)
+++ tests/manipulatorsOutput3.cfa	(revision 9edf8357e5c2a54aec5f83e78e29ccbbaabd8963)
@@ -1,7 +1,10 @@
 #include <fstream.hfa>
 int main() {
-    int128 x = 0xffff;
-    x <<= 64;;
+    int128 x = 0xffff, y = 0x2;
+    x <<= 64;
     x += 0xffff;
+    y <<= 64;
+    y += 0123;
+    y |= 0x8000000000000000;
     x = -x;
     sout | x;
@@ -32,8 +35,11 @@
     sout | left(wd( 45, oct(0123) )) | 'X';
     sout | left(wd( 45, oct(x) )) | 'X';
+    sout | left(wd( 45, oct(y) )) | 'X';
     sout | left(wd( 45,40, oct(0123) )) | 'X';
     sout | left(wd( 45,40, oct(x) )) | 'X';
+    sout | left(wd( 45,40, oct(y) )) | 'X';
     sout | left(wd( 40,45, oct(0123) )) | 'X';
     sout | left(wd( 40,45, oct(x) )) | 'X';
+    sout | left(wd( 40,45, oct(y) )) | 'X';
     printf( "%#-1.10oX\n", 0123 );
     sout | left(wd( 1,10, oct(0123) )) | 'X';
@@ -41,8 +47,10 @@
     sout | left(wd( 40,10, oct(0123) )) | 'X';
     sout | left(wd( 40,10, oct(x) )) | 'X';
+    sout | left(wd( 40,10, oct(y) )) | 'X';
     sout | left(wd( 10,40, oct(0123) )) | 'X';
     sout | left(wd( 10,40, oct(x) )) | 'X';
+    sout | left(wd( 10,40, oct(y) )) | 'X';
 
-    int128 y = 123456789;
+    y = 123456789;
     sout | left(wd( 45, 49, oct(y) )) | 'X';
     sout | nl;
