diff --git a/Data/Stream.hs b/Data/Stream.hs
--- a/Data/Stream.hs
+++ b/Data/Stream.hs
@@ -86,7 +86,9 @@
 
 instance Arbitrary a => Arbitrary (Stream a) where
   arbitrary = liftM2 Cons arbitrary arbitrary
-  coarbitrary (Cons x xs) = coarbitrary x . coarbitrary xs
+  coarbitrary xs gen = do
+    n <- arbitrary
+    coarbitrary (take (abs n) xs) gen
 
 infixr 5 <:>
 -- | The @ \<:\> @ operator is an infix version of the 'Cons'
diff --git a/Stream.cabal b/Stream.cabal
--- a/Stream.cabal
+++ b/Stream.cabal
@@ -1,5 +1,5 @@
 Name:                   Stream
-Version:                0.2.4
+Version:                0.2.5
 License:                BSD3
 License-file:           LICENSE
 Author:                 Wouter Swierstra
