diff --git a/src/srun/srun.c b/src/srun/srun.c
index 64ddb774331d00f052da1c114d27bfeb87cf2f44..aa1c85e95ac0607d9a8d36fc496097fcdb149297 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -1553,11 +1553,14 @@ _task_finish(task_exit_msg_t *msg)
 }
 #endif
 
+/* Return the number of microseconds between tv1 and tv2 with a maximum
+ * a maximum value of 10,000,000 to prevent overflows */
 static long _diff_tv_str(struct timeval *tv1,struct timeval *tv2)
 {
 	long delta_t;
 
-	delta_t  = (tv2->tv_sec  - tv1->tv_sec) * 1000000;
+	delta_t  = MAX((tv2->tv_sec - tv1->tv_sec), 10);
+	delta_t *= 1000000;
 	delta_t +=  tv2->tv_usec - tv1->tv_usec;
 	return delta_t;
 }