diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h
index a9e0749..100c204 100644
--- a/Mac/Include/macglue.h
+++ b/Mac/Include/macglue.h
@@ -84,11 +84,11 @@
 PyObject * PyMac_LoadCodeResourceModule(char *, char *); /* Load 'PYD ' resource from file */
 struct filedescr *PyMac_FindModuleExtension(char *, size_t *, char *); /* Look for module in single folder */
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 int PyMac_GetDirectory(FSSpec *dirfss, char *prompt);		/* Ask user for a directory */
 void PyMac_PromptGetFile(short numTypes, ConstSFTypeListPtr typeList, 
 	StandardFileReply *reply, char *prompt);	/* Ask user for file, with prompt */
-#endif /* TARGET_API_MAC_CARBON */
+#endif /* TARGET_API_MAC_OS8 */
 
 int PyMac_GetOSType(PyObject *, OSType *);	/* argument parser for OSType */
 PyObject *PyMac_BuildOSType(OSType);		/* Convert OSType to PyObject */
diff --git a/Mac/Modules/macmodule.c b/Mac/Modules/macmodule.c
index b9a56ef..d5f283b 100644
--- a/Mac/Modules/macmodule.c
+++ b/Mac/Modules/macmodule.c
@@ -31,7 +31,7 @@
 #include <string.h>
 #include <errno.h>
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 /* Skip for Carbon */
 #include "macstat.h"
 #endif
@@ -51,7 +51,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #else /* USE_GUSI */
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 #define stat macstat
 #endif
 #endif /* USE_GUSI */
@@ -259,7 +259,7 @@
 }
 #endif
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 static PyObject *
 mac_getbootvol(self, args)
 	PyObject *self;
@@ -499,7 +499,7 @@
 }
 #endif /* WEHAVE_FSTAT */
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 static PyObject *
 mac_xstat(self, args)
 	PyObject *self;
@@ -611,7 +611,7 @@
 #ifdef WEHAVE_FSTAT
 	{"fstat",	mac_fstat},
 #endif
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 	{"getbootvol",	mac_getbootvol}, /* non-standard */
 #endif
 	{"getcwd",	mac_getcwd},
@@ -623,7 +623,7 @@
 	{"rename",	mac_rename},
 	{"rmdir",	mac_rmdir},
 	{"stat",	mac_stat},
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 	{"xstat",	mac_xstat},
 #endif
 	{"sync",	mac_sync},
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
index 6fe0bd0..dd6c837 100644
--- a/Mac/Modules/macosmodule.c
+++ b/Mac/Modules/macosmodule.c
@@ -360,7 +360,7 @@
 #include <EPPC.h>
 #include <Events.h>
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 static char accepthle_doc[] = "Get arguments of pending high-level event";
 
 static PyObject *
@@ -704,7 +704,7 @@
 }
 
 static PyMethodDef MacOS_Methods[] = {
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 	{"AcceptHighLevelEvent",	MacOS_AcceptHighLevelEvent, 1,	accepthle_doc},
 #endif
 	{"GetCreatorAndType",		MacOS_GetCreatorAndType, 1,	getcrtp_doc},
@@ -760,10 +760,13 @@
 				Py_BuildValue("i", PyMac_AppearanceCompliant)) != 0)
 		return;
 #if TARGET_API_MAC_CARBON
-/* Will need a different name for MachO-carbon later (macho?) */
 #define PY_RUNTIMEMODEL "carbon"
-#else
+#elif TARGET_API_MAC_OS8
 #define PY_RUNTIMEMODEL "ppc"
+#elif TARGET_API_MAC_OSX
+#define PY_RUNTIMEMODEL "macho"
+#else
+#error "None of the TARGET_API_MAC_XXX I know about is set"
 #endif
 	if (PyDict_SetItemString(d, "runtimemodel", 
 				Py_BuildValue("s", PY_RUNTIMEMODEL)) != 0)
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index 5579735..928b07f 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -32,7 +32,7 @@
 
 #include <Events.h>
 
-#if TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_OS8
 /* Unfortunately this call is probably slower... */
 #define LMGetTicks() TickCount()
 #endif
@@ -171,7 +171,7 @@
 	int selectcur_hit;		/* Set to true when "select current" selected */
 	char *prompt;			/* The prompt */
 };
-#if TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_OS8
 /* The StandardFile hooks don't exist in Carbon. This breaks GetDirectory,
 ** but the macfsn code will replace it by a NavServices version anyway.
 */
@@ -297,7 +297,7 @@
 	PyMac_ConsoleIsDead = 1;
 }
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 /*
 ** Replacement routines for the PLstr... functions so we don't need
 ** StdCLib.
@@ -338,7 +338,7 @@
 	return ptr;
 }
 	
-#endif /* !TARGET_API_MAC_CARBON */
+#endif /* TARGET_API_MAC_OS8 */
 #endif /* USE_GUSI */
 
 
@@ -357,7 +357,7 @@
 	return buf;
 }
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 void
 c2pstrcpy(unsigned char *dst, const char *src)
 {
@@ -368,7 +368,7 @@
 	strncpy((char *)dst+1, src, len);
 	dst[0] = len;
 }
-#endif /* !TARGET_API_MAC_CARBON */
+#endif /* TARGET_API_MAC_OS8 */
 
 /* Like strerror() but for Mac OS error numbers */
 char *PyMac_StrError(int err)
@@ -498,7 +498,7 @@
 scan_event_queue(flush)
 	int flush;
 {
-#if TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_OS8
 	if ( CheckEventQueueForUserCancel() )
 		interrupted = 1;
 #else
@@ -608,7 +608,7 @@
 PyMac_HandleEventIntern(evp)
 	EventRecord *evp;
 {
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 	if ( evp->what == mouseDown ) {
 		WindowPtr wp;
 		
@@ -686,7 +686,7 @@
 	if( in_here > 1 || !schedparams.process_events || 
 	    (python_event_handler && !maycallpython) ) {
 		if ( maxsleep >= 0 ) {
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 			SystemTask();
 #else
 			int xxx = 0;
@@ -878,7 +878,7 @@
 	}
 	return item;
 }	
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_OS8
 /*
 ** Ask the user for a directory. I still can't understand
 ** why Apple doesn't provide a standard solution for this...
@@ -931,7 +931,7 @@
 	CustomGetFile((FileFilterYDUPP)0, numTypes, typeList, reply, GETFILEPROMPT_ID, where,
 				myhook_upp, NULL, NULL, NULL, (void *)&hook_args);
 }
-#endif /* TARGET_API_MAC_CARBON */
+#endif /* TARGET_API_MAC_OS8 */
 
 /* Convert a 4-char string object argument to an OSType value */
 int
