diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h
index 02ee84c..929e9ca 100644
--- a/Mac/Include/macglue.h
+++ b/Mac/Include/macglue.h
@@ -46,19 +46,23 @@
 char *PyMac_StrError(int);			/* strerror with mac errors */
 
 extern int PyMac_DoYieldEnabled;		/* Don't do eventloop when false */
+#ifdef USE_GUSI
+extern int PyMac_ConsoleIsDead;			/* True when exiting */
+extern void PyMac_SetGUSISpin(void);	/* Install our private GUSI spin routine */
+#endif
 
 extern PyObject *PyMac_OSErrException;		/* Exception for OSErr */
 PyObject *PyMac_GetOSErrException(void);	/* Initialize & return it */
 
+#ifdef USE_MACTCP
 int PyMac_Idle Py_PROTO((void));		/* Idle routine */
+#endif
 void PyMac_Yield Py_PROTO((void));		/* optional idle routine for mainloop */
 void PyMac_SetYield Py_PROTO((long, long, long, long)); /* Set timeouts */
 PyObject *PyErr_Mac(PyObject *, int);		/* Exception with a mac error */
 PyObject *PyMac_Error(OSErr);			/* Uses PyMac_GetOSErrException */
 void PyMac_HandleEvent Py_PROTO((EventRecord *)); /* Handle one event, if possible */
 
-int PyMac_Idle(void);				/* Idle routine */
-
 int PyMac_FindResourceModule(char *, char *); /* Test for 'PYC ' resource in a file */
 PyObject * PyMac_LoadResourceModule(char *, char *); /* Load 'PYC ' resource from file */
 
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index 112604e..18243ec 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -65,6 +65,7 @@
 #ifdef USE_GUSI
 #include <TFileSpec.h> /* For Path2FSSpec */
 #include <LowMem.h> /* For SetSFCurDir, etc */
+#include <GUSI.h>
 #endif
 
 #ifndef HAVE_UNIVERSAL_HEADERS
@@ -110,6 +111,8 @@
 static int interrupted;			/* Set to true when cmd-. seen */
 static RETSIGTYPE intcatcher Py_PROTO((int));
 
+static void PyMac_DoYield Py_PROTO((int));
+
 /*
 ** We attempt to be a good citizen by giving up the CPU periodically.
 ** When in the foreground we do this less often and for shorter periods
@@ -135,6 +138,11 @@
 int PyMac_DoYieldEnabled = 1;
 
 /*
+** Workaround for sioux/gusi combo: set when we are exiting
+*/
+int PyMac_ConsoleIsDead;
+
+/*
 ** Some stuff for our GetDirectory and PromptGetFile routines
 */
 struct hook_args {
@@ -171,6 +179,40 @@
 void SpinCursor(short x) { /* Dummy */ }
 #endif /* __CFM68K */
 
+/*
+** Replacement GUSI Spin function
+*/
+static int
+PyMac_GUSISpin(spin_msg msg, long arg)
+{
+	static Boolean			inForeground	=	true;
+	WindowPtr				win;
+	EventRecord				ev;
+	int						maysleep;
+
+	if (PyMac_ConsoleIsDead) return 0;
+#if 0
+	if (inForeground)
+		SpinCursor(msg == SP_AUTO_SPIN ? short(arg) : 1);
+#endif
+
+	if (interrupted) return -1;
+
+	if ( msg == SP_AUTO_SPIN || ((msg==SP_SLEEP||msg==SP_SELECT) && arg <= yield_fg))
+		maysleep = 0;
+	else
+		maysleep = 0;
+
+	PyMac_DoYield(maysleep);
+
+	return 0;
+}
+
+void
+PyMac_SetGUSISpin() {
+	GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
+}
+
 #endif
 
 
@@ -403,7 +445,7 @@
 ** Yield the CPU to other tasks.
 */
 static void
-PyMac_DoYield()
+PyMac_DoYield(int maysleep)
 {
 	EventRecord ev;
 	long yield;
@@ -415,19 +457,25 @@
 							NGetTrapAddress(_Unimplemented, ToolTrap));
 	}
 
-	if ( PyMac_DoYieldEnabled >= 0) {
+	lastyield = TickCount();
 #ifndef THINK_C
-		/* Under think this has been done before in intrcheck() or intrpeek() */
+	/* Under think this has been done before in intrcheck() or intrpeek() */
+	if (PyMac_DoYieldEnabled >= 0)
 		scan_event_queue(0);
 #endif
+	if (PyMac_DoYieldEnabled == 0)
 		return;
-	}
 		
 	in_foreground = PyMac_InForeground();
-	if ( in_foreground )
-		yield = yield_fg;
-	else
-		yield = yield_bg;
+	if ( maysleep ) {
+		if ( in_foreground )
+			yield = yield_fg;
+		else
+			yield = yield_bg;
+	} else {
+		yield = 0;
+	}
+		
 	while ( 1 ) {
 		if ( no_waitnextevent ) {
 			SystemTask();
@@ -440,7 +488,6 @@
 			break;
 		PyMac_HandleEvent(&ev);
 	}
-	lastyield = TickCount();
 }
 
 /*
@@ -455,9 +502,10 @@
 	else
 		iv = interval_bg;
 	if ( TickCount() > lastyield + iv )
-		PyMac_DoYield();
+		PyMac_DoYield(1);
 }
 
+#ifdef USE_MACTCP
 /*
 ** Idle routine for busy-wait loops.
 ** Gives up CPU, handles events and returns true if an interrupt is pending
@@ -466,9 +514,11 @@
 int
 PyMac_Idle()
 {
-	PyMac_DoYield();
+	PyMac_DoYield(1);
 	return intrpeek();
 }
+#endif
+
 /*
 ** Returns true if the argument has a resource fork, and it contains
 ** a 'PYC ' resource of the correct name
diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c
index 7241539..019e0be 100644
--- a/Mac/Python/macmain.c
+++ b/Mac/Python/macmain.c
@@ -28,6 +28,7 @@
 #include "pythonresources.h"
 #include "import.h"
 #include "marshal.h"
+#include "macglue.h"
 
 #include <Memory.h>
 #include <Resources.h>
@@ -108,6 +109,7 @@
 #if defined(USE_GUSI)
 	/* Setup GUSI */
 	GUSIDefaultSetup();
+	PyMac_SetGUSISpin();
 #endif
 
 #ifdef USE_SIOUX
@@ -396,7 +398,14 @@
 	}
 	else
 		SIOUXSettings.autocloseonquit = 1;
-#endif
+#ifdef USE_GUSI
+	/*
+	** Workaround for Sioux/GUSI combo: we should not call
+	** SiouxHandleOneEvent after the window is closed
+	*/
+	PyMac_ConsoleIsDead = 1;
+#endif /* USE_GUSI */
+#endif /* USE_SIOUX */
 #ifdef THINK_C
 	console_options.pause_atexit = keep;
 #endif
