diff --git a/Data/Number/Natural.hs b/Data/Number/Natural.hs
--- a/Data/Number/Natural.hs
+++ b/Data/Number/Natural.hs
@@ -61,8 +61,9 @@
     toRational = toRational . toInteger
 
 instance Enum Natural where
-    succ = (+1)
-    pred = (subtract 1)
+    succ = S
+    pred Z = error "Natural: pred 0"
+    pred (S a) = a
     toEnum = fromIntegral
     fromEnum = fromIntegral
     enumFromThenTo from thn to = go from (to `maybeSubtract` from) where
diff --git a/numbers.cabal b/numbers.cabal
--- a/numbers.cabal
+++ b/numbers.cabal
@@ -1,5 +1,5 @@
 Name:		numbers
-Version:	2009.5.18.1
+Version:	2009.5.20.1
 License:	BSD3
 Author:		Lennart Augustsson
 Maintainer:	Lennart Augustsson
