diff --git a/changes.txt b/changes.txt
--- a/changes.txt
+++ b/changes.txt
@@ -1,3 +1,9 @@
+0.4.2.0
+-------
+
+- Added `lapse` function.
+- Released Fri 22 Nov 2019 00:48:03 CET.
+
 0.4.1.0
 -------
 
diff --git a/src/Control/Timer/Tick.hs b/src/Control/Timer/Tick.hs
--- a/src/Control/Timer/Tick.hs
+++ b/src/Control/Timer/Tick.hs
@@ -29,6 +29,7 @@
                             tick,
                             ticks,
                             reset,
+                            lapse,
                             -- * Query
                             isLive,
                             isExpired,
@@ -204,6 +205,11 @@
 ticks 1 t = tick t
 ticks n t | n < 1     = error "negative number passed to `ticks`"
           | otherwise = ticks (n-1) (tick t)
+
+-- | Ticks the timer until 'isExpired' is @True@.
+lapse :: Timed a -> Timed a
+lapse t | isExpired t = t
+        | otherwise   = lapse (tick t)
 
 -- | Antonym of 'isExpired'.
 --
diff --git a/test/Control/Timer/TickSpec.hs b/test/Control/Timer/TickSpec.hs
--- a/test/Control/Timer/TickSpec.hs
+++ b/test/Control/Timer/TickSpec.hs
@@ -72,3 +72,16 @@
     it "resets the timer" $
       reset (ticks 30 t) `shouldBe` t
 
+  describe "lapse" $ do
+    let t = creaBoolTimer 10
+    it "lapses the timer" $
+      lapse t `shouldBe` ticks 10 t
+
+  describe "creaBoolTimerLoop" $ do
+    let t  = creaBoolTimerLoop 10
+    it "Expires after the right amount of clicks" $
+      fetchFrame (ticks 10 t) `shouldBe` True
+    let t' = creaTimedRes (Times 10 Reach) [(10, False), (1, True)]
+    it "behaves similarly to a multi-loop timer" $
+      fetchFrame (ticks 10 t) `shouldBe` fetchFrame (ticks 10 t')
+
diff --git a/timers-tick.cabal b/timers-tick.cabal
--- a/timers-tick.cabal
+++ b/timers-tick.cabal
@@ -1,5 +1,5 @@
 name:                timers-tick
-version:             0.4.1.0
+version:             0.4.2.0
 synopsis:            tick based timers
 description:         Tick-based timers and utilities, for games and
                      discrete-time programs.
@@ -36,7 +36,7 @@
   HS-Source-Dirs:      test, src
   main-is:             Tests.hs
   build-depends:       base == 4.*
-                       , hspec == 2.5.*
+                       , hspec >= 2.5 && < 2.8
   other-modules:       Control.Timer.Tick,
                        Control.Timer.TickSpec
   type:                exitcode-stdio-1.0
