diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst
index f2d863c..c3148a6 100644
--- a/Doc/distutils/apiref.rst
+++ b/Doc/distutils/apiref.rst
@@ -1100,6 +1100,24 @@
 
    For non-POSIX platforms, currently just returns ``sys.platform``.
 
+   For MacOS X systems the OS version reflects the minimal version on which
+   binaries will run (that is, the value of ``MACOSX_DEPLOYMENT_TARGET``
+   during the build of Python), not the OS version of the current system. 
+
+   For universal binary builds on MacOS X the architecture value reflects
+   the univeral binary status instead of the architecture of the current
+   processor. For 32-bit universal binaries the architecture is ``fat``, 
+   for 64-bit universal binaries the architecture is ``fat64``, and 
+   for 4-way universal binaries the architecture is ``universal``. 
+
+   Examples of returned values on MacOS X:
+
+   * ``macosx-10.3-ppc``
+
+   * ``macosx-10.3-fat``
+
+   * ``macosx-10.5-universal``
+
    .. % XXX isn't this also provided by some other non-distutils module?
 
 
diff --git a/Include/pymacconfig.h b/Include/pymacconfig.h
index e864e72..a8679af 100644
--- a/Include/pymacconfig.h
+++ b/Include/pymacconfig.h
@@ -15,6 +15,8 @@
 # undef SIZEOF_SIZE_T
 # undef SIZEOF_TIME_T
 # undef SIZEOF_VOID_P
+# undef SIZEOF__BOOL
+# undef WORDS_BIGENDIAN
 
 #    undef VA_LIST_IS_ARRAY
 #    if defined(__LP64__) && defined(__x86_64__)
@@ -28,12 +30,19 @@
 
 #    undef SIZEOF_LONG
 #    ifdef __LP64__
+#	 define SIZEOF__BOOL		1
+#        define SIZEOF__BOOL		1
 #        define SIZEOF_LONG 		8
 #        define SIZEOF_PTHREAD_T 	8
 #        define SIZEOF_SIZE_T 		8
 #        define SIZEOF_TIME_T 		8
 #        define SIZEOF_VOID_P 		8
 #    else
+#        ifdef __ppc__
+#	    define SIZEOF__BOOL		4
+#        else
+#	    define SIZEOF__BOOL		1
+#        endif
 #        define SIZEOF_LONG 		4
 #        define SIZEOF_PTHREAD_T 	4
 #        define SIZEOF_SIZE_T 		4
@@ -54,6 +63,11 @@
 
 #    endif
 
+#ifdef __BIG_ENDIAN__
+#define WORDS_BIGENDIAN 1
+#endif /* __BIG_ENDIAN */
+
+
 #endif /* defined(_APPLE__) */
 
 #endif /* PYMACCONFIG_H */
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index 28337fa..042306e 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -99,7 +99,11 @@
         if not macver:
             macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
 
-        if not macver:
+        if 1:
+            # Always calculate the release of the running machine,
+            # needed to determine if we can build fat binaries or not.
+
+            macrelease = macver
             # Get the system version. Reading this plist is a documented
             # way to get the system version (see the documentation for
             # the Gestalt Manager)
@@ -115,16 +119,18 @@
                         r'<string>(.*?)</string>', f.read())
                 f.close()
                 if m is not None:
-                    macver = '.'.join(m.group(1).split('.')[:2])
+                    macrelease = '.'.join(m.group(1).split('.')[:2])
                 # else: fall back to the default behaviour
 
+        if not macver:
+            macver = macrelease
+
         if macver:
             from distutils.sysconfig import get_config_vars
             release = macver
             osname = "macosx"
 
-
-            if (release + '.') >= '10.4.' and \
+            if (macrelease + '.') >= '10.4.' and \
                     '-arch' in get_config_vars().get('CFLAGS', '').strip():
                 # The universal build will build fat binaries, but not on
                 # systems before 10.4
@@ -133,9 +139,13 @@
                 # 'universal' instead of 'fat'.
 
                 machine = 'fat'
+                cflags = get_config_vars().get('CFLAGS')
 
-                if '-arch x86_64' in get_config_vars().get('CFLAGS'):
-                    machine = 'universal'
+                if '-arch x86_64' in cflags:
+                    if '-arch i386' in cflags:
+                        machine = 'universal'
+                    else:
+                        machine = 'fat64'
 
             elif machine in ('PowerPC', 'Power_Macintosh'):
                 # Pick a sane name for the PPC architecture.
