diff --git a/lib/rack/timeout.rb b/lib/rack/timeout.rb
index <HASH>..<HASH> 100644
--- a/lib/rack/timeout.rb
+++ b/lib/rack/timeout.rb
@@ -44,7 +44,7 @@ module Rack
         timeout_thread = Thread.start do
           loop do
             info.duration = Time.now - ready_time
-            sleep_seconds = [1, info.timeout - info.duration].min
+            sleep_seconds = [1 - (info.duration % 1), info.timeout - info.duration].min
             break if sleep_seconds <= 0
             Rack::Timeout._set_state! env, :active
             sleep(sleep_seconds)
try to ensure steps between logging active state in debug mode are exactly 1s, by accounting for accumulated processing time from previous iteration