diff --git a/bsd/sys/kern/uipc_socket.cc b/bsd/sys/kern/uipc_socket.cc
index 5c32e6a26f015bc15ca1c3b85eecbeb455821b5d..c99012ca51bc499124ef624bab6c6a3475569f38 100644
--- a/bsd/sys/kern/uipc_socket.cc
+++ b/bsd/sys/kern/uipc_socket.cc
@@ -2312,7 +2312,7 @@ sosetopt(struct socket *so, struct sockopt *sopt)
 			}
 			/* assert(tick > 0); */
 			/* assert(ULONG_MAX - INT_MAX >= 1000000); */
-			val = (u_long)(tv.tv_sec * hz) + tv.tv_usec;
+			val = (u_long)(tv.tv_sec * hz) + (tv.tv_usec * hz / 1000000);
 			if (val > INT_MAX) {
 				error = EDOM;
 				goto bad;