diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index 07c644b8ef7c9412c6e2be7dc1378d6aa70f6196..74029553b615764eed62dd21ce2bf0dc964919bc 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -505,6 +505,8 @@ void kwsysProcess_SetTimeout(kwsysProcess* cp, double timeout)
     {
     cp->Timeout = 0;
     }
+  // Force recomputation of TimeoutTime.
+  cp->TimeoutTime.tv_sec = -1;
 }
 
 /*--------------------------------------------------------------------------*/
diff --git a/ProcessWin32.c b/ProcessWin32.c
index eabd85fee51b14e1906a9f591775b4de11eac2d4..a18ea2748ff79c94ba5d1f3f35b178174046b24f 100644
--- a/ProcessWin32.c
+++ b/ProcessWin32.c
@@ -698,6 +698,8 @@ void kwsysProcess_SetTimeout(kwsysProcess* cp, double timeout)
     {
     cp->Timeout = 0;
     }
+  // Force recomputation of TimeoutTime.
+  cp->TimeoutTime.QuadPart = -1;
 }
 
 /*--------------------------------------------------------------------------*/