diff --git a/System/Random/MWC.hs b/System/Random/MWC.hs
--- a/System/Random/MWC.hs
+++ b/System/Random/MWC.hs
@@ -375,10 +375,11 @@
 -- but it may be more convenient to use in some situations.
 uniformVector :: (PrimMonad m, Variate a)
              => Gen (PrimState m) -> Int -> m (I.Vector a)
-uniformVector gen n = M.unsafeNew n >>= go (uniform gen) 0
-  where
-    go u !i mu | i >= n    = unsafeFreeze mu
-               | otherwise = u >>= M.unsafeWrite mu i >> go u (i+1) mu
+uniformVector gen n = do
+  mu <- M.unsafeNew n
+  let go !i | i < n     = uniform gen >>= M.unsafeWrite mu i >> go (i+1)
+            | otherwise = unsafeFreeze mu
+  go 0
 {-# INLINE uniformVector #-}
 
 data T = T {-# UNPACK #-} !Double {-# UNPACK #-} !Double
diff --git a/mwc-random.cabal b/mwc-random.cabal
--- a/mwc-random.cabal
+++ b/mwc-random.cabal
@@ -1,5 +1,5 @@
 name:           mwc-random
-version:        0.5.1.1
+version:        0.5.1.2
 synopsis:       Fast, high quality pseudo random number generation
 description:
   This package contains code for generating high quality random
