diff --git a/Data/UnixTime/Diff.hs b/Data/UnixTime/Diff.hs
--- a/Data/UnixTime/Diff.hs
+++ b/Data/UnixTime/Diff.hs
@@ -48,7 +48,7 @@
 -- | Calculating difference between two 'UnixTime'.
 --
 -- >>> UnixTime 100 2000 `diffUnixTime` UnixTime 98 2100
--- UnixDiffTime {udtSeconds = 1, udtMicroSecnods = 999900}
+-- UnixDiffTime {udtSeconds = 1, udtMicroSeconds = 999900}
 --
 
 diffUnixTime :: UnixTime -> UnixTime -> UnixDiffTime
@@ -65,7 +65,7 @@
 -- | Creating difference from seconds.
 --
 -- >>> secondsToUnixDiffTime 100
--- UnixDiffTime {udtSeconds = 100, udtMicroSecnods = 0}
+-- UnixDiffTime {udtSeconds = 100, udtMicroSeconds = 0}
 
 secondsToUnixDiffTime :: (Integral a) => a -> UnixDiffTime
 secondsToUnixDiffTime sec = UnixDiffTime (fromIntegral sec) 0
@@ -74,10 +74,10 @@
 -- | Creating difference from micro seconds.
 --
 -- >>> microSecondsToUnixDiffTime 12345678
--- UnixDiffTime {udtSeconds = 12, udtMicroSecnods = 345678}
+-- UnixDiffTime {udtSeconds = 12, udtMicroSeconds = 345678}
 --
 -- >>> microSecondsToUnixDiffTime (-12345678)
--- UnixDiffTime {udtSeconds = -12, udtMicroSecnods = -345678}
+-- UnixDiffTime {udtSeconds = -12, udtMicroSeconds = -345678}
 
 microSecondsToUnixDiffTime :: (Integral a) => a -> UnixDiffTime
 microSecondsToUnixDiffTime usec = calc (fromIntegral s) (fromIntegral u)
diff --git a/Data/UnixTime/Types.hsc b/Data/UnixTime/Types.hsc
--- a/Data/UnixTime/Types.hsc
+++ b/Data/UnixTime/Types.hsc
@@ -16,6 +16,16 @@
 
 -- |
 -- Data structure for Unix time.
+--
+-- Please note that this uses GHC-derived 'Eq' and 'Ord' instances.
+-- Notably
+--
+-- >>> UnixTime 1 0 > UnixTime 0 999999999
+-- True
+--
+-- You should instead use 'UnixDiffTime' along with its helpers such
+-- as 'Data.UnixTime.microSecondsToUnixDiffTime' which will ensure
+-- that such unusual values are never created.
 data UnixTime = UnixTime {
     -- | Seconds from 1st Jan 1970
     utSeconds :: {-# UNPACK #-} !CTime
@@ -49,15 +59,23 @@
 -- Data structure for UnixTime diff.
 --
 -- >>> (3 :: UnixDiffTime) + 2
--- UnixDiffTime {udtSeconds = 5, udtMicroSecnods = 0}
+-- UnixDiffTime {udtSeconds = 5, udtMicroSeconds = 0}
 -- >>> (2 :: UnixDiffTime) - 5
--- UnixDiffTime {udtSeconds = -3, udtMicroSecnods = 0}
+-- UnixDiffTime {udtSeconds = -3, udtMicroSeconds = 0}
 -- >>> (3 :: UnixDiffTime) * 2
--- UnixDiffTime {udtSeconds = 6, udtMicroSecnods = 0}
-
+-- UnixDiffTime {udtSeconds = 6, udtMicroSeconds = 0}
+--
+-- It is up to the user to ensure that @'udtMicroSeconds' < 1000000@.
+-- Helpers such as 'Data.UnixTime.microSecondsToUnixDiffTime' can help
+-- you to create valid values. For example, it's a mistake to use
+-- 'Data.Text.addUnixDiffTime' with a value @UnixDiffTime 0 9999999@
+-- as it will produce an incorrect value back. You should instead use
+-- functions such as 'Data.UnixTime.microSecondsToUnixDiffTime' to
+-- create values that are in-range. This avoids any gotchas when then
+-- doing comparisons.
 data UnixDiffTime = UnixDiffTime {
     -- | Seconds from 1st Jan 1970
     udtSeconds :: {-# UNPACK #-} !CTime
     -- | Micro seconds (i.e. 10^(-6))
-  , udtMicroSecnods :: {-# UNPACK #-} !Int32
+  , udtMicroSeconds :: {-# UNPACK #-} !Int32
   } deriving (Eq,Ord,Show)
diff --git a/unix-time.cabal b/unix-time.cabal
--- a/unix-time.cabal
+++ b/unix-time.cabal
@@ -1,5 +1,5 @@
 Name:                   unix-time
-Version:                0.3.3
+Version:                0.3.4
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
