diff --git a/sys.c b/sys.c
index e39aa4faa3ba817a6c569c81ce47ba63d4066d1c..363a27426b8e241263284131d4186cc6b3db92f0 100644
--- a/sys.c
+++ b/sys.c
@@ -337,6 +337,8 @@ void *oop_sys_run_once(oop_source_sys *sys) {
 			tv.tv_sec = 0;
 			tv.tv_usec = 0;
 		}
+		assert(tv.tv_usec >= 0);
+		assert(tv.tv_usec < 1000000);
 	}
 
 	if (!sys->sig_active) sys->do_jmp = !sigsetjmp(sys->env,1);
@@ -364,7 +366,13 @@ void *oop_sys_run_once(oop_source_sys *sys) {
 		if (NULL != sys->files[i][OOP_EXCEPTION].f) FD_SET(i,&xfd);
 	}
 
+	assert(ptv == NULL
+	       || (ptv->tv_usec >= 0 && ptv->tv_usec < 1000000));
 	do
+		assert(ptv == NULL
+		       || (ptv->tv_usec >= 0
+			   && ptv->tv_usec < 1000000));
+		assert(sys->num_files >= 0);
 		rv = select(sys->num_files,&rfd,&wfd,&xfd,ptv);
 	while (0 > rv && EINTR == errno);