diff --git a/monad-loops.cabal b/monad-loops.cabal
--- a/monad-loops.cabal
+++ b/monad-loops.cabal
@@ -1,5 +1,5 @@
 name:                   monad-loops
-version:                0.3.0.1
+version:                0.3.0.2
 stability:              provisional
 license:                BSD3
 license-file:           LICENSE
diff --git a/src/Control/Monad/Loops.hs b/src/Control/Monad/Loops.hs
--- a/src/Control/Monad/Loops.hs
+++ b/src/Control/Monad/Loops.hs
@@ -339,7 +339,7 @@
         q <- p x
         if q
                 then dropWhileM p xs
-                else return xs
+                else return (x:xs)
 
 -- |like 'dropWhileM' but trims both ends of the list.
 trimM :: (Monad m) => (a -> m Bool) -> [a] -> m [a]
