diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## Zip 0.1.9
+
+* Fixed a bug with modification time serialization on 32 bit systems.
+
 ## Zip 0.1.8
 
 * Fixed a bug that caused `zip` to write incorrect number of entries
diff --git a/Codec/Archive/Zip/Internal.hs b/Codec/Archive/Zip/Internal.hs
--- a/Codec/Archive/Zip/Internal.hs
+++ b/Codec/Archive/Zip/Internal.hs
@@ -33,6 +33,7 @@
 import Data.Conduit (Conduit, Source, Sink, (=$=), ($$), awaitForever, yield)
 import Data.Conduit.Internal (zipSinks)
 import Data.Digest.CRC32 (crc32Update)
+import Data.Fixed (Fixed (..))
 import Data.Foldable (foldl')
 import Data.Map.Strict (Map, (!))
 import Data.Maybe (fromJust, catMaybes, isNothing)
@@ -983,7 +984,9 @@
     dosTime = fromIntegral (seconds + shiftL minutes 5 + shiftL hours 11)
     dosDate = fromIntegral (day     + shiftL month   5 + shiftL year  9)
 
-    seconds = fromEnum (todSec tod) `quot` 2000000000000
+    seconds =
+      let (MkFixed x) = todSec tod
+      in fromIntegral (x `quot` 2000000000000)
     minutes = todMin tod
     hours   = todHour tod
     tod     = timeToTimeOfDay utctDayTime
diff --git a/zip.cabal b/zip.cabal
--- a/zip.cabal
+++ b/zip.cabal
@@ -31,7 +31,7 @@
 -- POSSIBILITY OF SUCH DAMAGE.
 
 name:                 zip
-version:              0.1.8
+version:              0.1.9
 cabal-version:        >= 1.10
 license:              BSD3
 license-file:         LICENSE.md
@@ -106,7 +106,7 @@
                     , text             >= 0.2     && < 1.3
                     , time             >= 1.4     && < 1.8
                     , transformers     >= 0.4     && < 0.6
-                    , zip              >= 0.1.8
+                    , zip              >= 0.1.9
   default-language:   Haskell2010
 
 source-repository head
