diff --git a/Data/Number/Natural.hs b/Data/Number/Natural.hs
--- a/Data/Number/Natural.hs
+++ b/Data/Number/Natural.hs
@@ -22,6 +22,14 @@
     S _ `compare` Z    =  GT
     S x `compare` S y  =  x `compare` y
 
+    -- (_|_) `compare` Z == _|_, but (_|_) >= Z = True
+    -- so for maximum laziness, we need a specialized version of (>=) and (<=)
+    _ >= Z = True
+    Z >= S _ = False
+    S a >= S b = a >= b
+
+    (<=) = flip (>=)
+
 maybeSubtract :: Natural -> Natural -> Maybe Natural
 a   `maybeSubtract` Z   = Just a
 S a `maybeSubtract` S b = a `maybeSubtract` b
diff --git a/numbers.cabal b/numbers.cabal
--- a/numbers.cabal
+++ b/numbers.cabal
@@ -1,5 +1,5 @@
 Name:		numbers
-Version:	2009.5.28.1
+Version:	2009.8.6.1
 License:	BSD3
 Author:		Lennart Augustsson
 Maintainer:	Lennart Augustsson
@@ -12,7 +12,7 @@
 		differentiable numbers, symbolic numbers,
 		natural numbers, interval arithmetic.
 Build-type:	Simple
-Build-Depends:	base
+Build-Depends:	base >= 3 && < 5
 Exposed-modules:	Data.Number.Symbolic Data.Number.Dif
 			Data.Number.CReal Data.Number.Fixed
 			Data.Number.Interval Data.Number.BigFloat
