diff --git a/src/GHC/TypeLits/List.hs b/src/GHC/TypeLits/List.hs
--- a/src/GHC/TypeLits/List.hs
+++ b/src/GHC/TypeLits/List.hs
@@ -39,6 +39,7 @@
   , someNatsVal
   , someNatsVal'
   , reifyNats
+  , reifyNats'
   , sameNats
   -- ** Traversals
   , traverseNatList
@@ -199,19 +200,36 @@
 --
 -- Essentially a continuation-style version of 'SomeNats'.
 --
--- For compatability with 'reifyNat', be aware that this also produces
--- @'KnownNat' n@s where @n@ is negative, without complaining.
+-- Be aware that this also produces @'KnownNat' n@s where @n@ is negative,
+-- without complaining.  To be consistent, within the library, this
+-- /should/ be called @reifyNatsPos@; however, the naming choice is for
+-- consistency with 'reifyNat' from the /reflections/ package.  Use
+-- 'reifyNats'' for a "safe" version.
 reifyNats :: [Integer] -> (forall ns. KnownNats ns => NatList ns -> r) -> r
 reifyNats []     f = f ØNL
 reifyNats (n:ns) f = reifyNat n $ \m ->
                        reifyNats ns $ \ms ->
                          f (m :<# ms)
 
+-- | "Safe" version of 'reifyNats', which will only run the continuation if
+-- every 'Integer' in the list is non-negative.  If not, then returns
+-- the given "default" value instead.
+reifyNats'
+    :: [Integer]
+    -> r
+    -> (forall ns. KnownNats ns => NatList ns -> r)
+    -> r
+reifyNats' ns d f =
+    case someNatsVal ns of
+      Just (SomeNats ms) -> f ms
+      Nothing            -> d
+
+
 -- | Like 'someNatsVal', but will also go ahead and produce 'KnownNat's
 -- whose integer values are negative.  It won't ever error on producing
 -- them, but extra care must be taken when using the produced 'SomeNat's.
-someNatsVal' :: [Integer] -> SomeNats
-someNatsVal' ns = reifyNats ns SomeNats
+someNatsValPos :: [Integer] -> SomeNats
+someNatsValPos ns = reifyNats ns SomeNats
 
 -- | Get evidence that the two 'KnownNats' lists are actually the "same"
 -- list of 'Nat's (that they were instantiated with the same numbers).
@@ -222,7 +240,7 @@
 -- case 'sameNats' ns ms of
 --   Just 'Refl' -> -- in this branch, GHC recognizes that the two ['Nat']s
 --                  -- are the same.
---   Nothing     -> -- in this branch, they aren't
+--   Nothing   -> -- in this branch, they aren't
 -- @
 sameNats
     :: (KnownNats ns, KnownNats ms)
@@ -380,6 +398,7 @@
                           reifySymbols ns $ \ms ->
                             f (m :<$ ms)
 
+
 -- | Get evidence that the two 'KnownSymbols' lists are actually the "same"
 -- list of 'Symboles's (that they were instantiated with the same strings).
 --
@@ -389,7 +408,7 @@
 -- case 'sameSymbols' ns ms of
 --   Just 'Refl' -> -- in this branch, GHC recognizes that the
 --                  -- two ['Symbol']s are the same
---   Nothing     -> -- in this branch, they aren't
+--   Nothing   -> -- in this branch, they aren't
 -- @
 sameSymbols
     :: (KnownSymbols ns, KnownSymbols ms)
@@ -409,3 +428,4 @@
             Refl <- sameSymbol n m
             Refl <- sameSymbols ns' ms'
             return Refl
+
diff --git a/typelits-witnesses.cabal b/typelits-witnesses.cabal
--- a/typelits-witnesses.cabal
+++ b/typelits-witnesses.cabal
@@ -1,5 +1,5 @@
 name:                typelits-witnesses
-version:             0.1.2.0
+version:             0.1.3.0
 synopsis:            Existential witnesses, singletons, and classes for operations on GHC TypeLits
 description:         Provides witnesses for 'KnownNat' and 'KnownSymbol'
                      instances for various operations on GHC TypeLits - in
