diff --git a/Mac/Include/pythonresources.h b/Mac/Include/pythonresources.h
index 5125a10..4b353c5 100644
--- a/Mac/Include/pythonresources.h
+++ b/Mac/Include/pythonresources.h
@@ -41,6 +41,8 @@
 #define OPT_SUPPRESS	5
 #define OPT_UNBUFFERED	6
 #define OPT_DEBUGGING	7
+#define OPT_KEEPNORMAL	8
+#define OPT_KEEPERROR	9
 
 /* Dialog for 'No preferences directory' */
 #define NOPREFDIR_ID	133
diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c
index 0ac81cb..547456f 100644
--- a/Mac/Python/macmain.c
+++ b/Mac/Python/macmain.c
@@ -40,6 +40,10 @@
 #include <SIOUX.h>
 #endif
 
+#ifdef THINK_C
+#include <console.h>
+#endif
+
 #define STARTUP "PythonStartup"
 
 extern int Py_DebugFlag; /* For parser.c, declared in pythonrun.c */
@@ -59,6 +63,10 @@
 static char **orig_argv;
 static int  orig_argc;
 
+/* Flags indicating whether stdio window should stay open on termination */
+static int keep_normal;
+static int keep_error = 1;
+
 #ifdef USE_MAC_APPLET_SUPPORT
 /* Applet support */
 
@@ -117,12 +125,7 @@
 	err = run_main_resource();
 	fflush(stderr);
 	fflush(stdout);
-#ifdef __MWERKS__
-	if (!err)
-		SIOUXSettings.autocloseonquit = 1;
-	else
-		printf("\n[Terminated]\n");
-#endif
+	PyMac_Exit(err);
 	/* XXX Should we bother to Py_Exit(sts)? */
 }
 
@@ -164,7 +167,8 @@
 */
 void
 PyMac_InteractiveOptions(int *inspect, int *verbose, int *suppress_print, 
-						 int *unbuffered, int *debugging)
+						 int *unbuffered, int *debugging, int *keep_normal,
+						 int *keep_error)
 {
 	KeyMap rmap;
 	unsigned char *map;
@@ -183,6 +187,11 @@
 		printf("Option dialog not found - cannot set options\n");
 		return;
 	}
+	
+	/* Set keep-open-on-error */
+	GetDialogItem(dialog, OPT_KEEPERROR, &type, (Handle *)&handle, &rect);
+	SetCtlValue(handle, *keep_error);
+	
 	while (1) {
 		handle = NULL;
 		ModalDialog(NULL, &item);
@@ -204,6 +213,8 @@
 		OPT_ITEM(OPT_SUPPRESS, suppress_print);
 		OPT_ITEM(OPT_UNBUFFERED, unbuffered);
 		OPT_ITEM(OPT_DEBUGGING, debugging);
+		OPT_ITEM(OPT_KEEPNORMAL, keep_normal);
+		OPT_ITEM(OPT_KEEPERROR, keep_error);
 		
 #undef OPT_ITEM
 	}
@@ -228,8 +239,7 @@
 	argv0 = argv[0];	/* For getprogramname() */
 	
 	PyMac_InteractiveOptions(&inspect, &Py_VerboseFlag, &Py_SuppressPrintingFlag,
-			&unbuffered, &Py_DebugFlag);
-
+			&unbuffered, &Py_DebugFlag, &keep_normal, &keep_error);
 
 	if (unbuffered) {
 #ifndef MPW
@@ -253,7 +263,7 @@
 		if ((fp = fopen(filename, "r")) == NULL) {
 			fprintf(stderr, "%s: can't open file '%s'\n",
 				argv[0], filename);
-			exit(2);
+			PyMac_Exit(2);
 		}
 	}
 	
@@ -282,6 +292,31 @@
 	/*NOTREACHED*/
 }
 
+/*
+** Terminate application
+*/
+PyMac_Exit(status)
+	int status;
+{
+	int keep;
+	
+	if ( status )
+		keep = keep_error;
+	else
+		keep = keep_normal;
+		
+#ifdef __MWERKS__
+	if (keep)
+		printf("\n[Terminated]\n");
+	else
+		SIOUXSettings.autocloseonquit = 1;
+#endif
+#ifdef THINK_C
+	console_options.pause_atexit = keep;
+#endif
+
+	exit(status);
+}
 
 /* Return the program name -- some code out there needs this. */
 
