diff --git a/Control/Concurrent/Supply.hs b/Control/Concurrent/Supply.hs
--- a/Control/Concurrent/Supply.hs
+++ b/Control/Concurrent/Supply.hs
@@ -71,9 +71,12 @@
 blockCounter = unsafeDupablePerformIO $ newIORef 0
 {-# NOINLINE blockCounter #-}
 
+modifyBlock :: () -> IO Int
+modifyBlock _ = atomicModifyIORef blockCounter $ \ i -> let i' = i + blockSize in i' `seq` (i', i)
+{-# NOINLINE modifyBlock #-}
+
 gen :: () -> Block
-gen _ = Block (unsafeDupablePerformIO $ atomicModifyIORef blockCounter $ \ i -> let i' = i + blockSize in (i', i))
-              (gen <$> units)
+gen x = Block (unsafeDupablePerformIO (modifyBlock x)) (gen <$> units)
 {-# NOINLINE gen #-}
 
 newBlock :: IO Block
diff --git a/concurrent-supply.cabal b/concurrent-supply.cabal
--- a/concurrent-supply.cabal
+++ b/concurrent-supply.cabal
@@ -1,6 +1,6 @@
 name:          concurrent-supply
 category:      Concurrency, Parallelism
-version:       0.1.2
+version:       0.1.3
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
