>From libraries/base/cbits/inputReady.c:
tv.tv_sec = msecs / 1000;
tv.tv_usec = msecs % 1000;
This should be (msecs % 1000) * 1000, right? usec stands for microseconds.
See http://www.haskell.org/onlinereport/io.html#sect21.9.1.
/NAD