diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.2.1.1
+
+* Fix a bug in `Deque`'s new vector allocation/copy code.
+
 ## 0.2.1
 
 * Export `Prim`, `Unbox` and `Storable`
diff --git a/Data/Mutable/Deque.hs b/Data/Mutable/Deque.hs
--- a/Data/Mutable/Deque.hs
+++ b/Data/Mutable/Deque.hs
@@ -131,7 +131,7 @@
         size2 = start `mod` V.length v
     V.unsafeCopy
         (V.unsafeTake size1 v')
-        (V.unsafeDrop start v)
+        (V.unsafeSlice size2 size1 v)
     V.unsafeCopy
         (V.unsafeSlice size1 size2 v')
         (V.unsafeTake size2 v)
diff --git a/mutable-containers.cabal b/mutable-containers.cabal
--- a/mutable-containers.cabal
+++ b/mutable-containers.cabal
@@ -1,5 +1,5 @@
 name:                mutable-containers
-version:             0.2.1
+version:             0.2.1.1
 synopsis:            Abstactions and concrete implementations of mutable containers
 description:         See docs and README at <http://www.stackage.org/package/mutable-containers>
 homepage:            https://github.com/fpco/mutable-containers
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -40,10 +40,22 @@
         , [return PopFront, return PopBack]
         ]
 
+manyPushes :: [DequeAction]
+manyPushes = concat
+    [ replicate 50 $ PushBack 0
+    , replicate 50 PopFront
+    , replicate 50 $ PushFront 0
+    , replicate 50 PopBack
+    ]
+
+specialCase :: [DequeAction]
+specialCase =
+    [PushBack 9, PushBack 5,PushBack 11,PushBack 2,PushBack 13,PushBack 10,PushBack 4,PushBack 13,PushBack 7,PushBack 8,PushBack 6,PushBack 4,PushBack 7,PushBack 9,PushBack 10,PushBack 3,PushBack 2,PushBack 12,PushBack 12 ,PushBack 6,PushBack 3,PushBack 5,PushBack 14,PushBack 14,PushBack 11,PushBack 8,PopFront,PopFront,PopFront,PushBack 11,PushBack 3,PopFront,PopFront,PushBack 13,PushBack 12,PopFront,PushBack 10,PushBack 7,PopFront,PopFront,PushBack 13,PushBack 9,PopFront,PushBack 7,PushBack 2,PopFront,PopFront,PushBack 6,PushBack 4,PopFront,PopFront,PopFront,PushBack 9,PushBack 3,PopFront,PushBack 10,PushBack 6,PopFront,PopFront,PopFront,PushBack 12,PushBack 5,PopFront,PushBack 12,PushBack 5,PopFront,PushBack 6,PushBack 4,PopFront,PopFront,PopFront,PushBack 14,PushBack 10,PopFront,PushBack 14,PushBack 10,PopFront,PushBack 11,PushBack 8,PopFront,PushBack 8,PushBack 2,PopFront,PopFront,PopFront,PushBack 13,PushBack 7,PopFront,PushBack 12,PushBack 5,PopFront,PushBack 10,PushBack 8, PopFront,PushBack 7,PushBack 2,PopFront,PopFront,PushBack 9,PushBack 4,PopFront,PopFront,PopFront,PopFront,PopFront,PopFront,PopFront,PopFront,PushBack 4,PushBack 9,PushBack 3,PushBack 10,PushBack 6,PushBack 4,PushBack 13,PushBack 7,PushBack 9,PushBack 3,PopFront]
+
 spec :: Spec
 spec = do
     describe "Deque" $ do
-        let test name forceType = prop name $ \actions -> do
+        let runActions forceType actions = do
                 base <- newColl :: IO (IORef [Int])
                 tested <- fmap forceType newColl
                 forM_ (PopFront : PopBack : actions) $ \action -> do
@@ -70,6 +82,11 @@
                             Just _ -> drain
                             Nothing -> return $! ()
                 drain
+        let test name forceType = describe name $ do
+                prop "arbitrary actions" $ runActions forceType
+                it "many pushes" $ runActions forceType manyPushes
+                it "special case" $ runActions forceType specialCase
+
         test "UDeque" asUDeque
         test "SDeque" asSDeque
         test "BDeque" asBDeque
