--- Csound5.13.0/Top/csound.c.orig	2011-04-07 10:36:19.738489172 +0100
+++ Csound5.13.0/Top/csound.c	2011-04-07 10:41:09.834581223 +0100
@@ -1382,6 +1382,10 @@
     {
         int done;
         int returnValue;
+        /* WTB - Oct 15 2009: only perform if CS_STATE_COMP set. */
+        if (UNLIKELY((csound->engineState & CS_STATE_COMP) == 0)) {
+           return 1;
+        }
         /* setup jmp for return after an exit() */
         if ((returnValue = setjmp(csound->exitjmp))) {
 #ifndef MACOSX
@@ -1402,6 +1406,10 @@
     {
         int done = 0;
         int returnValue;
+        /* WTB - Oct 15 2009: only perform if CS_STATE_COMP set. */
+        if (UNLIKELY((csound->engineState & CS_STATE_COMP) == 0)) {
+           return 1;
+        }
         /* setup jmp for return after an exit() */
         if ((returnValue = setjmp(csound->exitjmp))) {
 #ifndef MACOSX
@@ -1447,6 +1455,10 @@
         int done;
         int returnValue;
         csound->performState = 0;
+        /* WTB - Oct 15 2009: only perform if CS_STATE_COMP set. */
+        if (UNLIKELY((csound->engineState & CS_STATE_COMP) == 0)) {
+           return 1;
+        }
         /* setup jmp for return after an exit() */
         if ((returnValue = setjmp(csound->exitjmp))) {
 #ifndef MACOSX
--- Csound5.13.0/Top/main.c.orig	2011-04-07 10:36:24.745611983 +0100
+++ Csound5.13.0/Top/main.c	2011-04-07 10:43:02.001313569 +0100
@@ -89,7 +89,9 @@
     dbfs_init(csound, DFLT_DBFS);
     csound->csRtClock = (RTCLOCK*) csound->Calloc(csound, sizeof(RTCLOCK));
     csoundInitTimerStruct(csound->csRtClock);
-    csound->engineState |= CS_STATE_COMP | CS_STATE_CLN;
+    /* WTB - Oct 15 2009: only set CS_STATE_CLN; CS_STATE_COMP set when retval=0. */
+    csound->engineState |= /*CS_STATE_COMP |*/ CS_STATE_CLN;
+
 
 #ifndef USE_DOUBLE
 #ifdef BETA
@@ -409,6 +411,13 @@
     if (O->Midioutname != NULL || O->FMidioutname != NULL)
       openMIDIout(csound);
 
-    return musmon(csound);
+    n = musmon(csound);
+
+    /* WTB - Oct 15 2009: CS_STATE_COMP set when retval=0. */
+    if (n == 0) {
+               csound->engineState |= CS_STATE_COMP;
+    }
+
+    return n;
 }
 
