diff --git a/Data/Time/Calendar/Days.hs b/Data/Time/Calendar/Days.hs
--- a/Data/Time/Calendar/Days.hs
+++ b/Data/Time/Calendar/Days.hs
@@ -7,6 +7,7 @@
 	Day(..),addDays,diffDays
 ) where
 
+import Control.DeepSeq
 import Data.Ix
 import Data.Typeable
 #if LANGUAGE_Rank2Types
@@ -21,6 +22,9 @@
 #endif
 #endif
     )
+
+instance NFData Day where
+	rnf (ModifiedJulianDay a) = rnf a
 
 instance Typeable Day where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Calendar.Days.Day") []
diff --git a/Data/Time/Clock/Scale.hs b/Data/Time/Clock/Scale.hs
--- a/Data/Time/Clock/Scale.hs
+++ b/Data/Time/Clock/Scale.hs
@@ -12,6 +12,7 @@
         secondsToDiffTime, picosecondsToDiffTime
 ) where
 
+import Control.DeepSeq
 import Data.Ratio ((%))
 import Data.Fixed
 import Data.Typeable
@@ -29,6 +30,10 @@
 #endif
     )
 
+-- necessary because H98 doesn't have "cunning newtype" derivation
+instance NFData UniversalTime where
+	rnf (ModJulianDate a) = rnf a
+
 instance Typeable UniversalTime where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.Scale.UniversalTime") []
 
@@ -45,6 +50,9 @@
 #endif
 #endif
     )
+
+-- necessary because H98 doesn't have "cunning newtype" derivation
+instance NFData DiffTime -- FIXME: Data.Fixed had no NFData instances yet at time of writing
 
 instance Typeable DiffTime where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.Scale.DiffTime") []
diff --git a/Data/Time/Clock/TAI.hs b/Data/Time/Clock/TAI.hs
--- a/Data/Time/Clock/TAI.hs
+++ b/Data/Time/Clock/TAI.hs
@@ -18,6 +18,7 @@
 import Data.Time.LocalTime
 import Data.Time.Calendar.Days
 import Data.Time.Clock
+import Control.DeepSeq
 import Data.Typeable
 import Data.Fixed
 #if LANGUAGE_Rank2Types
@@ -34,6 +35,9 @@
 #endif
 #endif
     )
+
+instance NFData AbsoluteTime where
+	rnf (MkAbsoluteTime a) = rnf a
 
 instance Typeable AbsoluteTime where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.TAI.AbsoluteTime") []
diff --git a/Data/Time/Clock/UTC.hs b/Data/Time/Clock/UTC.hs
--- a/Data/Time/Clock/UTC.hs
+++ b/Data/Time/Clock/UTC.hs
@@ -15,6 +15,7 @@
 	UTCTime(..),NominalDiffTime
 ) where
 
+import Control.DeepSeq
 import Data.Time.Calendar.Days
 import Data.Time.Clock.Scale
 import Data.Fixed
@@ -40,6 +41,9 @@
 #endif
 #endif
 
+instance NFData UTCTime where
+	rnf (UTCTime d t) = d `deepseq` t `deepseq` ()
+
 instance Typeable UTCTime where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.UTC.UTCTime") []
 
@@ -66,6 +70,9 @@
 #endif
 #endif
     )
+
+-- necessary because H98 doesn't have "cunning newtype" derivation
+instance NFData NominalDiffTime -- FIXME: Data.Fixed had no NFData instances yet at time of writing
 
 instance Typeable NominalDiffTime where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.UTC.NominalDiffTime") []
diff --git a/Data/Time/LocalTime/LocalTime.hs b/Data/Time/LocalTime/LocalTime.hs
--- a/Data/Time/LocalTime/LocalTime.hs
+++ b/Data/Time/LocalTime/LocalTime.hs
@@ -17,6 +17,7 @@
 import Data.Time.LocalTime.TimeZone
 import Data.Time.Calendar
 import Data.Time.Clock
+import Control.DeepSeq
 import Data.Typeable
 #if LANGUAGE_Rank2Types
 import Data.Data
@@ -39,6 +40,9 @@
 #endif
     )
 
+instance NFData LocalTime where
+	rnf (LocalTime d t) = d `deepseq` t `deepseq` ()
+
 instance Typeable LocalTime where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.LocalTime.LocalTime") []
 
@@ -78,6 +82,9 @@
 #endif
 #endif
 #endif
+
+instance NFData ZonedTime where
+	rnf (ZonedTime lt z) = lt `deepseq` z `deepseq` ()
 
 instance Typeable ZonedTime where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.LocalTime.ZonedTime") []
diff --git a/Data/Time/LocalTime/TimeOfDay.hs b/Data/Time/LocalTime/TimeOfDay.hs
--- a/Data/Time/LocalTime/TimeOfDay.hs
+++ b/Data/Time/LocalTime/TimeOfDay.hs
@@ -13,6 +13,7 @@
 import Data.Time.LocalTime.TimeZone
 import Data.Time.Calendar.Private
 import Data.Time.Clock
+import Control.DeepSeq
 import Data.Typeable
 import Data.Fixed
 #if LANGUAGE_Rank2Types
@@ -37,6 +38,9 @@
 #endif
 #endif
     )
+
+instance NFData TimeOfDay where
+	rnf (TimeOfDay h m s) = h `deepseq` m `deepseq` s `seq` () -- FIXME: Data.Fixed had no NFData instances yet at time of writing
 
 instance Typeable TimeOfDay where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.TimeOfDay.TimeOfDay") []
diff --git a/Data/Time/LocalTime/TimeZone.hs b/Data/Time/LocalTime/TimeZone.hs
--- a/Data/Time/LocalTime/TimeZone.hs
+++ b/Data/Time/LocalTime/TimeZone.hs
@@ -19,6 +19,7 @@
 
 import Foreign
 import Foreign.C
+import Control.DeepSeq
 import Data.Typeable
 #if LANGUAGE_Rank2Types
 import Data.Data
@@ -39,6 +40,9 @@
 #endif
 #endif
     )
+
+instance NFData TimeZone where
+	rnf (TimeZone m so n) = m `deepseq` so `deepseq` n `deepseq` ()
 
 instance Typeable TimeZone where
 	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.TimeZone.TimeZone") []
diff --git a/time.cabal b/time.cabal
--- a/time.cabal
+++ b/time.cabal
@@ -1,5 +1,5 @@
 name:           time
-version:        1.3
+version:        1.4
 stability:      stable
 license:        BSD3
 license-file:   LICENSE
@@ -35,7 +35,7 @@
 
 library
 {
-    build-depends: base == 4.*, old-locale
+    build-depends: base == 4.*, deepseq >= 1.1, old-locale
     ghc-options: -Wall
     if impl(ghc)
         extensions: Rank2Types DeriveDataTypeable StandaloneDeriving
