diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c
index a923ff27305c9a0b22fec9d2a6fc1c555f15010e..5b7b44a9763dde37468273ef2ecacb6952d498e4 100644
--- a/src/sbbs3/sexyz.c
+++ b/src/sbbs3/sexyz.c
@@ -364,8 +364,8 @@ int recv_byte(void* unused, unsigned timeout)
 #endif
 			FD_SET(sock,&socket_set);
 		if((t=end-msclock())<0) t=0;
-		tv.tv_sec=t/MSCLOCKS_PER_SEC;
-		tv.tv_usec=0;
+		tv.tv_sec=t/((unsigned)MSCLOCKS_PER_SEC);
+		tv.tv_usec=(t%((unsigned)MSCLOCKS_PER_SEC))*1000;
 
 		if((i=select(sock+1,&socket_set,NULL,NULL,&tv))<1) {
 			if(i==SOCKET_ERROR) {