diff --git a/Modules/linuxaudiodev.c b/Modules/linuxaudiodev.c
index a0661c5..37ad5ff 100644
--- a/Modules/linuxaudiodev.c
+++ b/Modules/linuxaudiodev.c
@@ -4,8 +4,6 @@
  * 
  * Author          : Peter Bosch
  * Created On      : Thu Mar  2 21:10:33 2000
- * Last Modified By: Peter Bosch
- * Last Modified On: Fri Mar 24 11:27:00 2000
  * Status          : Unknown, Use with caution!
  * 
  * Unless other notices are present in any part of this file
@@ -174,18 +172,40 @@
 {
     char *cp;
     int rv, size;
-	
+    fd_set write_set_fds;
+    struct timeval tv;
+    int select_retval;
+    
     if (!PyArg_ParseTuple(args, "s#:write", &cp, &size)) 
 	return NULL;
 
+    /* use select to wait for audio device to be available */
+    FD_ZERO(&write_set_fds);
+    FD_SET(self->x_fd, &write_set_fds);
+    tv.tv_sec = 4; /* timeout values */
+    tv.tv_usec = 0; 
+
     while (size > 0) {
+      select_retval = select(self->x_fd+1, NULL, &write_set_fds, NULL, &tv);
+      tv.tv_sec = 1; tv.tv_usec = 0; /* willing to wait this long next time*/
+      if (select_retval) {
         if ((rv = write(self->x_fd, cp, size)) == -1) {
-            PyErr_SetFromErrno(LinuxAudioError);
-            return NULL;
-        }
-        self->x_ocount += rv;
-        size -= rv;
-        cp += rv;
+	  if (errno != EAGAIN) {
+	    PyErr_SetFromErrno(LinuxAudioError);
+	    return NULL;
+	  } else {
+	    errno = 0; /* EAGAIN: buffer is full, try again */
+	  }
+        } else {
+	  self->x_ocount += rv;
+	  size -= rv;
+	  cp += rv;
+	}
+      } else {
+	/* printf("Not able to write to linux audio device within %ld seconds\n", tv.tv_sec); */
+	PyErr_SetFromErrno(LinuxAudioError);
+	return NULL;
+      }
     }
     Py_INCREF(Py_None);
     return Py_None;
