Index: doc/papers/concurrency/examples/Fib.c
===================================================================
--- doc/papers/concurrency/examples/Fib.c	(revision 466fa013f2bfa1aed287add52d969087ca7f4721)
+++ doc/papers/concurrency/examples/Fib.c	(revision 600d7bec1d21e6a29321f79744d5d4f45bc9ca93)
@@ -1,16 +1,17 @@
 #include <stdio.h>
 
-#define FIB_INIT { 0, 1 }
-typedef struct { int fn1, fn; } Fib;
+typedef struct {
+	int fn1, fn;
+} Fib;
+
+#define FibCtor { 1, 0 }
+
 int fib( Fib * f ) {
-
-	int ret = f->fn1;
-	f->fn1 = f->fn;
-	f->fn = ret + f->fn;
-
-	return ret;
+	int fn = f->fn; f->fn = f->fn1;
+		f->fn1 = f->fn + fn;
+	return fn;
 }
 int main() {
-	Fib f1 = FIB_INIT, f2 = FIB_INIT;
+	Fib f1 = FibCtor, f2 = FibCtor;
 	for ( int i = 0; i < 10; i += 1 ) {
 		printf( "%d %d\n", fib( &f1 ), fib( &f2 ) );
Index: doc/papers/concurrency/examples/Fib.cfa
===================================================================
--- doc/papers/concurrency/examples/Fib.cfa	(revision 466fa013f2bfa1aed287add52d969087ca7f4721)
+++ doc/papers/concurrency/examples/Fib.cfa	(revision 600d7bec1d21e6a29321f79744d5d4f45bc9ca93)
@@ -13,11 +13,9 @@
 }
 
-#define FIB_INIT { 0, 1 }
-typedef struct { int fn1, fn2; } Fib;
+#define FibCtor { 0, 1 }
+typedef struct { int fn, fn1; } Fib;
 int fib_state( Fib & f ) with( f ) {
-	int ret = fn2;
-	int fn = fn1 + fn2;
-	fn2 = fn1; fn1 = fn;
-	return ret;
+	int fn0 = fn1 + fn2;  fn2 = fn1;  fn = fn0;
+	return fn1;
 }
 
@@ -30,18 +28,23 @@
 	}
 }
-int next( Fib1 & fib ) with( fib ) { resume( fib ); return fn; }
+int ?()( Fib1 & fib ) with( fib ) { return resume( fib ).fn; }
 
-coroutine Fib2 { int ret; };					// used for communication
+coroutine Fib2 { int fn; };						// used for communication
 void main( Fib2 & fib ) with( fib ) {			// called on first resume
-	int fn, fn1 = 1, fn2 = 0;					// precompute first two states
+	int fn1 = 1, fn2 = 0;						// precompute first two states
 	for () {
-		ret = fn2;
 		fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;	// general case
 		suspend();								// restart last resume
 	}
 }
-int next( Fib2 & fib ) with( fib ) {
-	resume( fib );								// restart last suspend
-	return ret;
+int ?()( Fib2 & fib ) with( fib ) {
+	return resume( fib ).fn;					// restart last suspend
+}
+int ?()( Fib2 & fib, int N ) with( fib ) {
+	for ( N - 1 ) fib();
+	return fib();
+}
+double ?()( Fib2 & fib ) with( fib ) {
+	return (int)(fib()) / 3.14159;						// restart last suspend
 }
 
@@ -51,5 +54,5 @@
 	sout | nl;
 
-	Fib f1 = FIB_INIT, f2 = FIB_INIT;
+	Fib f1 = FibCtor, f2 = FibCtor;
 	for ( 10 )
 		sout | fib_state( f1 ) | fib_state( f2 );
@@ -58,10 +61,10 @@
 	Fib1 f1, f2;
 	for ( 10 )
-		sout | next( f1 ) | next( f2 );
+		sout | f1() | f2();
 	sout | nl;
 
-	Fib2 f1, f2;
+	Fib2 f12, f22;
 	for ( 10 )
-		sout | next( (Fib2 &)f1 ) | next( (Fib2 &)f2 );
+		sout | (int)f12() | (double)f12() | f22( 2 );
 }
 
Index: doc/papers/concurrency/examples/Fib2.cfa
===================================================================
--- doc/papers/concurrency/examples/Fib2.cfa	(revision 466fa013f2bfa1aed287add52d969087ca7f4721)
+++ doc/papers/concurrency/examples/Fib2.cfa	(revision 600d7bec1d21e6a29321f79744d5d4f45bc9ca93)
@@ -10,6 +10,6 @@
 // Created On       : Thu Apr 26 23:20:08 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 22 17:26:41 2019
-// Update Count     : 28
+// Last Modified On : Sat May 18 08:55:59 2019
+// Update Count     : 36
 // 
 
@@ -17,9 +17,8 @@
 #include <coroutine.hfa>
 
-coroutine Fibonacci { int fn1; };						// used for communication
+coroutine Fibonacci { int fn1, fn; };					// used for communication
 
 void main( Fibonacci & fib ) with( fib ) {				// called on first resume
-	int fn;
-	[fn1, fn] = [0, 1];									// precompute first two states
+	[fn1, fn] = [1, 0];									// precompute first two states
 	for () {
 		suspend();										// restart last resume
@@ -29,6 +28,5 @@
 
 int ?()( Fibonacci & fib ) with( fib ) {				// function call operator
-	resume( fib );										// restart last suspend
-	return fn1;
+	return resume( fib ).fn1;							// restart last suspend
 }
 
@@ -36,5 +34,5 @@
 	Fibonacci f1, f2;
 	for ( 10 ) {										// print N Fibonacci values
-		sout | f1() | f2();
+		sout | resume( f1 ).fn | resume( f2 ).fn;
 	} // for
 }
@@ -42,4 +40,4 @@
 // Local Variables: //
 // tab-width: 4 //
-// compile-command: "cfa fibonacci_1.cfa" //
+// compile-command: "cfa Fib2.cfa" //
 // End: //
