Index: tests/exceptions/.expect/fibonacci_nonlocal.txt
===================================================================
--- tests/exceptions/.expect/fibonacci_nonlocal.txt	(revision 555c599697fb5d2f6ad679e8acd5028309a44649)
+++ tests/exceptions/.expect/fibonacci_nonlocal.txt	(revision 614868b3cb2ae1807fc194c27193d919b549415a)
@@ -1,7 +1,8 @@
-0
-1
-1
-0
-2
-4
-20
+    0     0
+    1     1
+    1     1
+    2     2
+    3     3
+    5     5
+    8     8
+   13    13
Index: tests/exceptions/.expect/nonlocal_pingpong.txt
===================================================================
--- tests/exceptions/.expect/nonlocal_pingpong.txt	(revision 555c599697fb5d2f6ad679e8acd5028309a44649)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/exceptions/.expect/pingpong_nonlocal.txt
===================================================================
--- tests/exceptions/.expect/pingpong_nonlocal.txt	(revision 614868b3cb2ae1807fc194c27193d919b549415a)
+++ tests/exceptions/.expect/pingpong_nonlocal.txt	(revision 614868b3cb2ae1807fc194c27193d919b549415a)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/exceptions/fibonacci_nonlocal.cfa
===================================================================
--- tests/exceptions/fibonacci_nonlocal.cfa	(revision 555c599697fb5d2f6ad679e8acd5028309a44649)
+++ tests/exceptions/fibonacci_nonlocal.cfa	(revision 614868b3cb2ae1807fc194c27193d919b549415a)
@@ -9,7 +9,7 @@
 // Author           : Colby Parsons
 // Created On       : Thu July  6 07:29:37 2023
-// Last Modified By : Colby Parsons
-// Last Modified On : Thu July  6 07:29:37 2023
-// Update Count     : 0
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul  6 21:49:04 2023
+// Update Count     : 18
 //
 
@@ -18,60 +18,43 @@
 #include <stdlib.hfa>
 
-exception fib_num {
-    int num;
-};
+exception fib_num {};
 vtable(fib_num) fib_num_vt;
-
-exception fib_2_num {
-    int num1, num2;
-};
-vtable(fib_2_num) fib_2_num_vt;
+fib_num except{ &fib_num_vt };
 
 coroutine Fibonacci { int fn; };						// used for communication
 
 void main( Fibonacci & fib ) with( fib ) {				// called on first resume
-    int fn1, fn2;										// retained between resumes
-    try{
-        fn = 0;  fn1 = fn;									// 1st case
-        poll( fib );
-        suspend;											// restart last resume
-        fn = 1;  fn2 = fn1;  fn1 = fn;						// 2nd case
-        poll( fib );
-        suspend;											// restart last resume
-        for () {
-            fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;			// general case
-            poll( fib );
-            suspend;										// restart last resume
-        } // for
-    } catchResume ( fib_num * e ) {
-        fn1 = e->num;
-        fn2 = e->num;
-        fn = fn1 + fn2;
-    }  catchResume ( fib_2_num * e ) {
-        fn1 = e->num1;
-        fn2 = e->num1;
-        fn = fn1 + fn2;
-    }
+	int fn1, fn2;										// retained between resumes
+	try {
+		poll( fib );
+		suspend;										// restart last resume
+	} catchResume ( fib_num * e ) {
+		fn = 0;  fn1 = fn;								// 1st case
+	}
+	try {
+		poll( fib );
+		suspend;										// restart last resume
+	} catchResume ( fib_num * e ) {
+		fn = 1;  fn2 = fn1;  fn1 = fn;					// 2nd case
+	}
+	try {
+		for () {
+			poll( fib );
+			suspend;									// restart last resume
+		} // for
+	} catchResume ( fib_num * e ) {
+		fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;			// general case
+	}
 }
 
 int main() {
 	Fibonacci f1, f2;
-	for ( 3 ) {										// print N Fibonacci values
-		sout | resume( f1 ).fn;
-	} // for
-    for ( i; 3 ) {
-        fib_num except{ &fib_num_vt, i };
-        resumeAt( f1, except );
-        sout | resume( f1 ).fn;
-    }
-    {
-        fib_2_num except{ &fib_2_num_vt, 10, 12 };
-        resumeAt( f1, except );
-    }
-    sout | resume( f1 ).fn;
+	for ( i; 8 ) {
+		resumeAt( f1, except );  resumeAt( f2, except );
+		sout | wd( 5, resume( f1 ).fn ) | wd( 5, resume( f2 ).fn );
+	}
 }
 
 // Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fibonacci.cfa" //
+// compile-command: "cfa fibonacci_nonlocal.cfa" //
 // End: //
Index: tests/exceptions/nonlocal_pingpong.cfa
===================================================================
--- tests/exceptions/nonlocal_pingpong.cfa	(revision 555c599697fb5d2f6ad679e8acd5028309a44649)
+++ 	(revision )
@@ -1,66 +1,0 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-#include <coroutine.hfa>
-#include <stdlib.hfa>
-#include <fstream.hfa>
-
-exception num_pings { int num; };
-vtable(num_pings) num_pings_vt;
-
-exception num_pongs { int num; };
-vtable(num_pongs) num_pongs_vt;
-
-thread Ping;
-thread Pong { Ping & p; int cnt; };
-thread Ping { Pong & p; int cnt; };
-
-int numtimes = 100000;
-
-void main( Pong & this ) with(this) {
-    try {
-        for ( ;; ) {
-            while( !poll( this ) ) {}
-            num_pongs except{ &num_pongs_vt, cnt + 1 };
-            resumeAt( p, except );
-        }
-    } catchResume ( num_pings * e; e->num < numtimes ) {
-        cnt = e->num;
-    } catch( num_pings * e ) {
-        if ( e->num == numtimes ){
-            num_pongs except{ &num_pongs_vt, e->num + 1 };
-            resumeAt( p, except );
-        }
-    }
-}
-
-void main( Ping & this ) with(this) {
-    try {
-        for ( ;; ) {
-            while( !poll( this ) ) {}
-            num_pings except{ &num_pings_vt, cnt + 1 };
-            resumeAt( p, except );
-        }
-    } catchResume ( num_pongs * e; e->num < numtimes ) {
-        cnt = e->num;
-    } catch( num_pongs * e ) {
-        if ( e->num == numtimes ){
-            num_pings except{ &num_pings_vt, e->num + 1 };
-            resumeAt( p, except );
-        }
-    }
-}
-
-int main() {
-    processor p;
-    sout | "start";
-    {
-        Ping ping;
-        Pong pong;
-        &ping.p = &pong;
-        &pong.p = &ping;
-        num_pings except{ &num_pings_vt, 0 };
-        resumeAt( pong, except );
-    }
-    sout | "done";
-}
-
Index: tests/exceptions/pingpong_nonlocal.cfa
===================================================================
--- tests/exceptions/pingpong_nonlocal.cfa	(revision 614868b3cb2ae1807fc194c27193d919b549415a)
+++ tests/exceptions/pingpong_nonlocal.cfa	(revision 614868b3cb2ae1807fc194c27193d919b549415a)
@@ -0,0 +1,66 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+#include <coroutine.hfa>
+#include <stdlib.hfa>
+#include <fstream.hfa>
+
+exception num_pings { int num; };
+vtable(num_pings) num_pings_vt;
+
+exception num_pongs { int num; };
+vtable(num_pongs) num_pongs_vt;
+
+thread Ping;
+thread Pong { Ping & p; int cnt; };
+thread Ping { Pong & p; int cnt; };
+
+int numtimes = 100000;
+
+void main( Pong & this ) with(this) {
+    try {
+        for ( ;; ) {
+            while( !poll( this ) ) {}
+            num_pongs except{ &num_pongs_vt, cnt + 1 };
+            resumeAt( p, except );
+        }
+    } catchResume ( num_pings * e; e->num < numtimes ) {
+        cnt = e->num;
+    } catch( num_pings * e ) {
+        if ( e->num == numtimes ){
+            num_pongs except{ &num_pongs_vt, e->num + 1 };
+            resumeAt( p, except );
+        }
+    }
+}
+
+void main( Ping & this ) with(this) {
+    try {
+        for ( ;; ) {
+            while( !poll( this ) ) {}
+            num_pings except{ &num_pings_vt, cnt + 1 };
+            resumeAt( p, except );
+        }
+    } catchResume ( num_pongs * e; e->num < numtimes ) {
+        cnt = e->num;
+    } catch( num_pongs * e ) {
+        if ( e->num == numtimes ){
+            num_pings except{ &num_pings_vt, e->num + 1 };
+            resumeAt( p, except );
+        }
+    }
+}
+
+int main() {
+    processor p;
+    sout | "start";
+    {
+        Ping ping;
+        Pong pong;
+        &ping.p = &pong;
+        &pong.p = &ping;
+        num_pings except{ &num_pings_vt, 0 };
+        resumeAt( pong, except );
+    }
+    sout | "done";
+}
+
