Fix build on Solaris: CTime is no longer an instance of Integral, so do the
realToInteger-dance.
 gmtoff x = do 
   dst <- (#peek struct tm,tm_isdst) x
   tz <- if dst then peek altzone else peek timezone
-  return (-fromIntegral tz)
+  let realToInteger = round . realToFrac :: Real a => a -> Integer
+  return (-fromIntegral (realToInteger tz))
 # else /* ! HAVE_DECL_ALTZONE */
 
 #if !defined(mingw32_TARGET_OS)