diff --git a/Include/myselect.h b/Include/myselect.h
index fa8ade9..54884ad 100644
--- a/Include/myselect.h
+++ b/Include/myselect.h
@@ -75,6 +75,6 @@
 #define	FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
 #define	FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
 #define	FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
-#define FD_ZERO(p)	bzero((char *)(p), sizeof(*(p)))
+#define FD_ZERO(p)	memset((char *)(p), '\0', sizeof(*(p)))
 
 #endif /* FD_SET */
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 1c4028d..8afd208 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -33,13 +33,11 @@
 
 static object *SelectError;
 
-/* XXX This module should be re-entrant! */
-static object *fd2obj[FD_SETSIZE];
-
 static
-list2set(list, set)
+list2set(list, set, fd2obj)
     object *list;
     fd_set *set;
+    object *fd2obj[FD_SETSIZE];
 {
     int i, len, v, max=-1;
     object *o, *filenomethod, *fno;
@@ -76,9 +74,10 @@
 }
 
 static object *
-set2list(set, max)
+set2list(set, max, fd2obj)
     fd_set *set;
     int max;
+    object *fd2obj[FD_SETSIZE];
 {
     int i, num=0;
     object *list, *o;
@@ -112,6 +111,7 @@
     object *self;
     object *args;
 {
+    object *fd2obj[FD_SETSIZE];
     object *ifdlist, *ofdlist, *efdlist;
     fd_set ifdset, ofdset, efdset;
     double timeout;
@@ -141,14 +141,14 @@
 	return 0;
     }
 
-    bzero((char *)fd2obj, sizeof(fd2obj)); /* Not really needed */
+    memset((char *)fd2obj, '\0', sizeof(fd2obj));
     
     /* Convert lists to fd_sets, and get maximum fd number */
-    if( (imax=list2set(ifdlist, &ifdset)) < 0 )
+    if( (imax=list2set(ifdlist, &ifdset, fd2obj)) < 0 )
       return 0;
-    if( (omax=list2set(ofdlist, &ofdset)) < 0 )
+    if( (omax=list2set(ofdlist, &ofdset, fd2obj)) < 0 )
       return 0;
-    if( (emax=list2set(efdlist, &efdset)) < 0 )
+    if( (emax=list2set(efdlist, &efdset, fd2obj)) < 0 )
       return 0;
     max = imax;
     if ( omax > max ) max = omax;
@@ -164,9 +164,9 @@
     if ( n == 0 )
       imax = omax = emax = 0; /* Speedup hack */
 
-    ifdlist = set2list(&ifdset, imax);
-    ofdlist = set2list(&ofdset, omax);
-    efdlist = set2list(&efdset, emax);
+    ifdlist = set2list(&ifdset, imax, fd2obj);
+    ofdlist = set2list(&ofdset, omax, fd2obj);
+    efdlist = set2list(&efdset, emax, fd2obj);
 
     return mkvalue("OOO", ifdlist, ofdlist, efdlist);
 }
