diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,9 @@
+* 0.1.4
+
+  - Add 'splitPlacesBlanks' function from Daniel Wagner; like
+    'splitPlaces' but pads the output with blank lists to match the
+    length of the input list of places to split.
+
 * 0.1.3
 
   - Add 'chop' list-processing function.
diff --git a/Data/List/Split.hs b/Data/List/Split.hs
--- a/Data/List/Split.hs
+++ b/Data/List/Split.hs
@@ -46,6 +46,7 @@
                        , splitEvery
                        , chunk
                        , splitPlaces
+                       , splitPlacesBlanks
                        , chop
 
                        -- * Splitting combinators
diff --git a/Data/List/Split/Internals.hs b/Data/List/Split/Internals.hs
--- a/Data/List/Split/Internals.hs
+++ b/Data/List/Split/Internals.hs
@@ -487,6 +487,7 @@
 --
 -- > splitPlaces [2,3,4] [1..20] == [[1,2],[3,4,5],[6,7,8,9]]
 -- > splitPlaces [4,9] [1..10] == [[1,2,3,4],[5,6,7,8,9,10]]
+-- > splitPlaces [4,9,3] [1..10] == [[1,2,3,4],[5,6,7,8,9,10]]
 --
 --   The behavior of @'splitPlaces' ls xs@ when @'sum' ls /= 'length' xs@ can
 --   be inferred from the above examples and the fact that 'splitPlaces'
@@ -497,6 +498,21 @@
               => [i] -> [b] -> ([b] -> t -> t) -> t -> t
   splitPlacer [] _ _ n      = n
   splitPlacer _ [] _ n      = n
+  splitPlacer (l:ls) xs c n = let (x1, x2) = genericSplitAt l xs
+                              in  x1 `c` splitPlacer ls x2 c n
+
+-- | Split a list into chunks of the given lengths. Unlike 'splitPlaces', the
+-- output list will always be the same length as the first input argument. For
+-- example:
+--
+-- > splitPlacesBlanks [2,3,4] [1..20] == [[1,2],[3,4,5],[6,7,8,9]]
+-- > splitPlacesBlanks [4,9] [1..10] == [[1,2,3,4],[5,6,7,8,9,10]]
+-- > splitPlacesBlanks [4,9,3] [1..10] == [[1,2,3,4],[5,6,7,8,9,10],[]]
+splitPlacesBlanks :: Integral a => [a] -> [e] -> [[e]]
+splitPlacesBlanks is ys = build (splitPlacer is ys) where
+  splitPlacer :: forall i b t. Integral i
+              => [i] -> [b] -> ([b] -> t -> t) -> t -> t
+  splitPlacer [] _ _ n      = n
   splitPlacer (l:ls) xs c n = let (x1, x2) = genericSplitAt l xs
                               in  x1 `c` splitPlacer ls x2 c n
 
diff --git a/Properties.hs b/Properties.hs
--- a/Properties.hs
+++ b/Properties.hs
@@ -105,6 +105,9 @@
             , ("splitPlaces/last <= n",         qc prop_splitPlaces_last_less_n)
             , ("splitPlaces/preserve",          qc prop_splitPlaces_preserve)
             , ("splitPlaces/splitEvery",        qc prop_splitPlaces_splitEvery)
+            , ("splitPlacesB/length",           qc prop_splitPlacesB_length)
+            , ("splitPlacesB/last <= n",        qc prop_splitPlacesB_last_less_n)
+            , ("splitPlacesB/preserve",         qc prop_splitPlacesB_preserve)
             , ("lines",                         qc prop_lines)
             , ("wordsBy/words",                 qc prop_wordsBy_words)
             , ("linesBy/lines",                 qc prop_linesBy_lines)
@@ -290,6 +293,19 @@
 
 prop_splitPlaces_splitEvery :: Positive Int -> [Elt] -> Bool
 prop_splitPlaces_splitEvery (Positive n) l = splitPlaces (repeat n) l == splitEvery n l
+
+prop_splitPlacesB_length :: [NonNegative Int] -> [Elt] -> Bool
+prop_splitPlacesB_length ps xs = length ps' == length (splitPlacesBlanks ps' xs)
+  where ps' = map unNN ps
+
+prop_splitPlacesB_last_less_n :: NonEmptyList (NonNegative Int) -> NonEmptyList Elt -> Bool
+prop_splitPlacesB_last_less_n (NonEmpty ps) (NonEmpty l) = (head $ drop (length l' - 1) ps') >= length (last l')
+  where l' = splitPlacesBlanks ps' l
+        ps' = map unNN ps
+
+prop_splitPlacesB_preserve :: [NonNegative Integer] -> [Elt] -> Bool
+prop_splitPlacesB_preserve ps l = concat (splitPlacesBlanks ps' l) == genericTake (sum ps') l
+  where ps' = map unNN ps
 
 unNN :: NonNegative a -> a
 unNN (NonNegative x) = x
diff --git a/split.cabal b/split.cabal
--- a/split.cabal
+++ b/split.cabal
@@ -1,5 +1,5 @@
 Name:                split
-Version:             0.1.3
+Version:             0.1.4
 Stability:           stable
 Description:         Combinator library and utility functions for splitting lists.
 Homepage:            http://code.haskell.org/~byorgey/code/split
