diff --git a/loops.cabal b/loops.cabal
--- a/loops.cabal
+++ b/loops.cabal
@@ -1,5 +1,5 @@
 name:                loops
-version:             0.2.0.1
+version:             0.2.0.2
 synopsis:            Fast imperative-style loops
 description:
   @loops@ is a library for fast, imperative-style loops with a clean syntax.
diff --git a/src/Control/Monad/Loop/Internal.hs b/src/Control/Monad/Loop/Internal.hs
--- a/src/Control/Monad/Loop/Internal.hs
+++ b/src/Control/Monad/Loop/Internal.hs
@@ -54,14 +54,14 @@
     pure a = LoopT $ \yield -> yield a
     {-# INLINE (<*>) #-}
     fs <*> as = LoopT $ \yield next ->
-        runLoopT fs (\f next' _ -> runLoopT (fmap f as) yield next' next) next
+        runLoopT fs (\f -> runLoopT (fmap f as) yield) next
 
 instance Monad (LoopT m) where
     {-# INLINE return #-}
     return = pure
     {-# INLINE (>>=) #-}
     as >>= f = LoopT $ \yield next ->
-        runLoopT as (\a next' _ -> runLoopT (f a) yield next' next) next
+        runLoopT as (\a -> runLoopT (f a) yield) next
 
 instance MonadTrans LoopT where
     {-# INLINE lift #-}
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -12,5 +12,6 @@
       , QC.testProperty "foldr" prop_sum_foldr_LoopT
       , QC.testProperty "foldl (Unroll)" prop_sum_foldl_LoopT_Unroll
       , QC.testProperty "foldr (Unroll)" prop_sum_foldr_LoopT_Unroll
+      , QC.testProperty "break order" prop_break_order
       ]
   ]
diff --git a/test/Test/Sum.hs b/test/Test/Sum.hs
--- a/test/Test/Sum.hs
+++ b/test/Test/Sum.hs
@@ -29,3 +29,15 @@
   where
     unroll :: Unroll.Unroll 8
     unroll = Unroll.Unroll
+
+prop_break_order :: [Int] -> Property
+prop_break_order xs =
+    foldl' (+) 0 before === foldl' (+) 0 after
+  where
+    before = LoopT.loop $ do
+      x <- LoopT.forEach xs
+      if x < 10 then LoopT.continue 10 else LoopT.break_
+    after = LoopT.loop $ do
+      x <- LoopT.forEach xs
+      return ()
+      if x < 10 then LoopT.continue 10 else LoopT.break_
