diff --git a/Modules/expat/expat_external.h b/Modules/expat/expat_external.h
index f054014..3f1c363 100644
--- a/Modules/expat/expat_external.h
+++ b/Modules/expat/expat_external.h
@@ -11,7 +11,7 @@
    co-exist. */
 #include "pyexpatns.h"
 
-#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
+#if defined(_MSC_EXTENSIONS) && !defined(__CYGWIN__)
 #define XML_USE_MSC_EXTENSIONS 1
 #endif
 
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 995f8e7..8bb2df8 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -2,8 +2,6 @@
    Under Unix, the file descriptors are small integers.
    Under Win32, select only exists for sockets, and sockets may
    have any value except INVALID_SOCKET.
-   Under BeOS, we suffer the same dichotomy as Win32; sockets can be anything
-   >= 0.
 */
 
 #include "Python.h"
@@ -49,9 +47,7 @@
 #  include <winsock.h>
 #else
 #  define SOCKET int
-#  ifdef __BEOS__
-#    include <net/socket.h>
-#  elif defined(__VMS)
+#  if defined(__VMS)
 #    include <socket.h>
 #  endif
 #endif
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index d8ea423..3ad7039 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -242,9 +242,7 @@
 # include <netdb.h>
 
 /* Headers needed for inet_ntoa() and inet_addr() */
-# ifdef __BEOS__
-#  include <net/netdb.h>
-# elif defined(PYOS_OS2) && defined(PYCC_VACPP)
+# if defined(PYOS_OS2) && defined(PYCC_VACPP)
 #  include <netdb.h>
 typedef size_t socklen_t;
 # else
@@ -326,8 +324,7 @@
 #include "getnameinfo.c"
 #endif
 
-#if defined(MS_WINDOWS) || defined(__BEOS__)
-/* BeOS suffers from the same socket dichotomy as Win32... - [cjh] */
+#if defined(MS_WINDOWS)
 /* seem to be a few differences in the API */
 #define SOCKETCLOSE closesocket
 #define NO_DUP /* Actually it exists on NT 3.5, but what the heck... */
@@ -650,11 +647,6 @@
 #endif
 
 	Py_BEGIN_ALLOW_THREADS
-#ifdef __BEOS__
-	block = !block;
-	setsockopt(s->sock_fd, SOL_SOCKET, SO_NONBLOCK,
-		   (void *)(&block), sizeof(int));
-#else
 #ifndef MS_WINDOWS
 #if defined(PYOS_OS2) && !defined(PYCC_GCC)
 	block = !block;
@@ -674,7 +666,6 @@
 	block = !block;
 	ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block);
 #endif /* MS_WINDOWS */
-#endif /* __BEOS__ */
 	Py_END_ALLOW_THREADS
 
 	/* Since these don't return anything */
@@ -992,11 +983,6 @@
 		return Py_None;
 	}
 
-#ifdef __BEOS__
-	/* XXX: BeOS version of accept() doesn't set family correctly */
-	addr->sa_family = AF_INET;
-#endif
-
 	switch (addr->sa_family) {
 
 	case AF_INET:
@@ -1715,12 +1701,6 @@
 	PyObject *buf;
 	socklen_t buflen = 0;
 
-#ifdef __BEOS__
-	/* We have incomplete socket support. */
-	PyErr_SetString(socket_error, "getsockopt not supported");
-	return NULL;
-#else
-
 	if (!PyArg_ParseTuple(args, "ii|i:getsockopt",
 			      &level, &optname, &buflen))
 		return NULL;
@@ -1759,7 +1739,6 @@
 		return NULL;
 	}
 	return buf;
-#endif /* __BEOS__ */
 }
 
 PyDoc_STRVAR(getsockopt_doc,
@@ -3248,11 +3227,6 @@
 {
 	char *name;
 	struct protoent *sp;
-#ifdef __BEOS__
-/* Not available in BeOS yet. - [cjh] */
-	PyErr_SetString(socket_error, "getprotobyname not supported");
-	return NULL;
-#else
 	if (!PyArg_ParseTuple(args, "s:getprotobyname", &name))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
@@ -3263,7 +3237,6 @@
 		return NULL;
 	}
 	return PyInt_FromLong((long) sp->p_proto);
-#endif
 }
 
 PyDoc_STRVAR(getprotobyname_doc,
@@ -4277,14 +4250,12 @@
 	/* Socket types */
 	PyModule_AddIntConstant(m, "SOCK_STREAM", SOCK_STREAM);
 	PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM);
-#ifndef __BEOS__
 /* We have incomplete socket support. */
 	PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW);
 	PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET);
 #if defined(SOCK_RDM)
 	PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM);
 #endif
-#endif
 
 #ifdef	SO_DEBUG
 	PyModule_AddIntConstant(m, "SO_DEBUG", SO_DEBUG);
diff --git a/Modules/socketmodule.h b/Modules/socketmodule.h
index a4382ab..9c9b694 100644
--- a/Modules/socketmodule.h
+++ b/Modules/socketmodule.h
@@ -8,7 +8,7 @@
 #   include <sys/socket.h>
 # endif
 # include <netinet/in.h>
-# if !(defined(__BEOS__) || defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP)))
+# if defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP))
 #  include <netinet/tcp.h>
 # endif
 
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 4bf3a9c..45002a1 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -80,13 +80,6 @@
 #include <sys/time.h>
 #endif
 
-#ifdef __BEOS__
-#include <time.h>
-/* For bigtime_t, snooze(). - [cjh] */
-#include <support/SupportDefs.h>
-#include <kernel/OS.h>
-#endif
-
 /* Forward declarations */
 static int floatsleep(double);
 static double floattime(void);
@@ -894,7 +887,7 @@
 floatsleep(double secs)
 {
 /* XXX Should test for MS_WINDOWS first! */
-#if defined(HAVE_SELECT) && !defined(__BEOS__) && !defined(__EMX__)
+#if defined(HAVE_SELECT) && !defined(__EMX__)
 	struct timeval t;
 	double frac;
 	frac = fmod(secs, 1.0);
@@ -963,22 +956,6 @@
 		return -1;
 	}
 	Py_END_ALLOW_THREADS
-#elif defined(__BEOS__)
-	/* This sleep *CAN BE* interrupted. */
-	{
-		if( secs <= 0.0 ) {
-			return;
-		}
-
-		Py_BEGIN_ALLOW_THREADS
-		/* BeOS snooze() is in microseconds... */
-		if( snooze( (bigtime_t)( secs * 1000.0 * 1000.0 ) ) == B_INTERRUPTED ) {
-			Py_BLOCK_THREADS
-			PyErr_SetFromErrno( PyExc_IOError );
-			return -1;
-		}
-		Py_END_ALLOW_THREADS
-	}
 #elif defined(PLAN9)
 	{
 		double millisecs = secs * 1000.0;
