diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,7 @@
 Changelog for Safe
 
+0.3.7
+    Add Def variants of the Exact functions
 0.3.6
     #6, remove unnecessary Ord constraints from maximumBy/minimumBy
 0.3.5
diff --git a/Safe/Exact.hs b/Safe/Exact.hs
--- a/Safe/Exact.hs
+++ b/Safe/Exact.hs
@@ -20,15 +20,16 @@
     takeExact, dropExact, splitAtExact,
     zipExact, zipWithExact,
     -- * Safe wrappers
-    takeExactMay, takeExactNote,
-    dropExactMay, dropExactNote,
-    splitAtExactMay, splitAtExactNote,
-    zipExactMay, zipExactNote,
-    zipWithExactMay, zipWithExactNote,
+    takeExactMay, takeExactNote, takeExactDef,
+    dropExactMay, dropExactNote, dropExactDef,
+    splitAtExactMay, splitAtExactNote, splitAtExactDef,
+    zipExactMay, zipExactNote, zipExactDef,
+    zipWithExactMay, zipWithExactNote, zipWithExactDef,
     ) where
 
 import Control.Arrow
-
+import Data.Maybe
+import Safe.Util
 
 ---------------------------------------------------------------------
 -- HELPERS
@@ -92,12 +93,18 @@
 takeExactMay :: Int -> [a] -> Maybe [a]
 takeExactMay = splitAtExact_ (const Nothing) (const $ Just []) (\a -> fmap (a:))
 
+takeExactDef :: [a] -> Int -> [a] -> [a]
+takeExactDef def = fromMaybe def .^ takeExactMay
+
 dropExactNote :: String -> Int -> [a] -> [a]
 dropExactNote note = splitAtExact_ (addNote note "dropExactNote") id (flip const)
 
 dropExactMay :: Int -> [a] -> Maybe [a]
 dropExactMay = splitAtExact_ (const Nothing) Just (flip const)
 
+dropExactDef :: [a] -> Int -> [a] -> [a]
+dropExactDef def = fromMaybe def .^ dropExactMay
+
 splitAtExactNote :: String -> Int -> [a] -> ([a], [a])
 splitAtExactNote note = splitAtExact_ (addNote note "splitAtExactNote")
     (\x -> ([], x)) (\a b -> first (a:) b)
@@ -106,6 +113,8 @@
 splitAtExactMay = splitAtExact_ (const Nothing)
     (\x -> Just ([], x)) (\a b -> fmap (first (a:)) b)
 
+splitAtExactDef :: ([a], [a]) -> Int -> [a] -> ([a], [a])
+splitAtExactDef def = fromMaybe def .^ splitAtExactMay
 
 ---------------------------------------------------------------------
 -- ZIP
@@ -131,8 +140,14 @@
 zipExactMay :: [a] -> [b] -> Maybe [(a,b)]
 zipExactMay = zipWithExact_ (const Nothing) (Just [])  (\a b xs -> fmap ((a,b) :) xs)
 
+zipExactDef :: [(a,b)] -> [a] -> [b] -> [(a,b)]
+zipExactDef def = fromMaybe def .^ zipExactMay
+
 zipWithExactNote :: String -> (a -> b -> c) -> [a] -> [b] -> [c]
 zipWithExactNote note f = zipWithExact_ (addNote note "zipWithExactNote") []  (\a b xs -> f a b : xs)
 
 zipWithExactMay :: (a -> b -> c) -> [a] -> [b] -> Maybe [c]
 zipWithExactMay f = zipWithExact_ (const Nothing) (Just [])  (\a b xs -> fmap (f a b :) xs)
+
+zipWithExactDef :: [c] -> (a -> b -> c) -> [a] -> [b] -> [c]
+zipWithExactDef def = fromMaybe def .^^ zipWithExactMay
diff --git a/safe.cabal b/safe.cabal
--- a/safe.cabal
+++ b/safe.cabal
@@ -1,7 +1,7 @@
 cabal-version:  >= 1.6
 build-type:     Simple
 name:           safe
-version:        0.3.6
+version:        0.3.7
 license:        BSD3
 license-file:   LICENSE
 category:       Unclassified
