diff --git a/Data/Time/Parse.hsc b/Data/Time/Parse.hsc
--- a/Data/Time/Parse.hsc
+++ b/Data/Time/Parse.hsc
@@ -95,7 +95,7 @@
               year  <-  (#peek struct tm,tm_year ) p_tm :: IO CInt
               fsecs <-  peek p_fsecs
               let day = fromGregorian (fromIntegral (year+1900)) (1+fromIntegral month) (fromIntegral mday)
-              let tod = TimeOfDay (fromIntegral hour) (fromIntegral min) (fromIntegral (sec*1000000 + round (fsecs*1000000)) / fromIntegral 1000000)
+              let tod = TimeOfDay (fromIntegral hour) (fromIntegral min) (fromIntegral (round ((fromIntegral sec + fsecs)*1000000)) / fromIntegral 1000000)
               
               touchForeignPtr fztf
               
diff --git a/strptime.cabal b/strptime.cabal
--- a/strptime.cabal
+++ b/strptime.cabal
@@ -1,6 +1,6 @@
 Name: strptime
 Category: System, Data, Parsing
-Version: 1.0.2
+Version: 1.0.3
 Cabal-version: >= 1.2
 Build-type: Simple
 Copyright: Eugene Kirpichov
@@ -29,6 +29,7 @@
 Library
   Build-Depends: time, bytestring
   C-sources: cbits/hstrptime.c
+  GHC-Options: -O2
   Include-dirs: include
 
   if flag(split-base)
