diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index 09710d28df9f178212c0d567de43c18bffa9b984..1d5e5b189a639a42499c60d3688cea15fb45d906 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -1421,7 +1421,7 @@ js_socket_select(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
 		else if(JSVAL_IS_DOUBLE(argv[argn])) {
 			JS_ValueToNumber(cx,argv[argn],&jsd);
 			tv.tv_sec = (int)jsd;
-			tv.tv_usec = (int)(jsd*1000.0);
+			tv.tv_usec = (int)(jsd*1000000.0)%1000000;
 		}
 	}
 
diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c
index 50b53c18ec9ab6975a2692f2185084e666784541..16b933a3a01a0ba49974ac09ea55478800941401 100644
--- a/src/sbbs3/js_socket.c
+++ b/src/sbbs3/js_socket.c
@@ -944,7 +944,7 @@ js_poll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 		else if(JSVAL_IS_DOUBLE(argv[argn])) {
 			JS_ValueToNumber(cx,argv[argn],&jsd);
 			tv.tv_sec = (int)jsd;
-			tv.tv_usec = (int)(jsd*1000.0);
+			tv.tv_usec = (int)(jsd*1000000.0)%1000000;
 		}
 	}