diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+0.0.15
+
+* Change mod functions to use rem.
+
 0.0.14
 
 * Add mod functions for `DegreesLatitude` and `DegreesLongitude`.
diff --git a/coordinate.cabal b/coordinate.cabal
--- a/coordinate.cabal
+++ b/coordinate.cabal
@@ -1,5 +1,5 @@
 name:               coordinate
-version:            0.0.14
+version:            0.0.15
 license:            BSD3
 license-file:       LICENCE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
diff --git a/src/Data/Geo/Coordinate/DegreesLatitude.hs b/src/Data/Geo/Coordinate/DegreesLatitude.hs
--- a/src/Data/Geo/Coordinate/DegreesLatitude.hs
+++ b/src/Data/Geo/Coordinate/DegreesLatitude.hs
@@ -5,7 +5,7 @@
 module Data.Geo.Coordinate.DegreesLatitude(
   DegreesLatitude
 , AsDegreesLatitude(..)
-, modDegreesLatitude
+, remDegreesLatitude
 ) where
 
 import Control.Applicative(Applicative)
@@ -13,11 +13,10 @@
 import Control.Lens(Optic', Choice, prism')
 import Data.Bool((&&))
 import Data.Eq(Eq)
-import Data.Fixed(mod')
 import Data.Int(Int)
 import Data.Maybe(Maybe(Just, Nothing))
 import Data.Ord(Ord((<), (>)))
-import Prelude(Show)
+import Prelude(Show, rem)
 
 -- $setup
 -- >>> import Control.Lens((#), (^?))
@@ -65,24 +64,24 @@
                then Just (DegreesLatitude i)
                else Nothing)
 
--- | Setting a value `>= 90` will get that value `(`mod` 90)`.
+-- | Setting a value `>= 90` will get that value `(`rem` 90)`.
 --
--- >>> modDegreesLatitude 7
+-- >>> remDegreesLatitude 7
 -- DegreesLatitude 7
 --
--- >>> modDegreesLatitude 0
+-- >>> remDegreesLatitude 0
 -- DegreesLatitude 0
 --
--- >>> modDegreesLatitude 90
+-- >>> remDegreesLatitude 90
 -- DegreesLatitude 0
 --
--- >>> modDegreesLatitude 1
+-- >>> remDegreesLatitude 1
 -- DegreesLatitude 1
 --
--- >>> modDegreesLatitude 89
+-- >>> remDegreesLatitude 89
 -- DegreesLatitude 89 
-modDegreesLatitude ::
+remDegreesLatitude ::
   Int
   -> DegreesLatitude
-modDegreesLatitude x =
-  DegreesLatitude (x `mod'` 90)
+remDegreesLatitude x =
+  DegreesLatitude (x `rem` 90)
diff --git a/src/Data/Geo/Coordinate/DegreesLongitude.hs b/src/Data/Geo/Coordinate/DegreesLongitude.hs
--- a/src/Data/Geo/Coordinate/DegreesLongitude.hs
+++ b/src/Data/Geo/Coordinate/DegreesLongitude.hs
@@ -5,7 +5,7 @@
 module Data.Geo.Coordinate.DegreesLongitude(
   DegreesLongitude
 , AsDegreesLongitude(..)
-, modDegreesLongitude
+, remDegreesLongitude
 ) where
 
 import Control.Applicative(Applicative)
@@ -13,11 +13,10 @@
 import Control.Lens(Optic', Choice, prism')
 import Data.Bool((&&))
 import Data.Eq(Eq)
-import Data.Fixed(mod')
 import Data.Int(Int)
 import Data.Maybe(Maybe(Just, Nothing))
 import Data.Ord(Ord((<), (>)))
-import Prelude(Show)
+import Prelude(Show, rem)
 
 -- $setup
 -- >>> import Control.Lens((#), (^?))
@@ -65,24 +64,24 @@
                then Just (DegreesLongitude i)
                else Nothing)
 
--- | Setting a value `>= 90` will get that value `(`mod` 180)`.
+-- | Setting a value `>= 180` will get that value `(`rem` 180)`.
 --
--- >>> modDegreesLongitude 7
+-- >>> remDegreesLongitude 7
 -- DegreesLongitude 7
 --
--- >>> modDegreesLongitude 0
+-- >>> remDegreesLongitude 0
 -- DegreesLongitude 0
 --
--- >>> modDegreesLongitude 180
+-- >>> remDegreesLongitude 180
 -- DegreesLongitude 0
 --
--- >>> modDegreesLongitude 1
+-- >>> remDegreesLongitude 1
 -- DegreesLongitude 1
 --
--- >>> modDegreesLongitude 179
+-- >>> remDegreesLongitude 179
 -- DegreesLongitude 179 
-modDegreesLongitude ::
+remDegreesLongitude ::
   Int
   -> DegreesLongitude
-modDegreesLongitude x =
-  DegreesLongitude (x `mod'` 180)
+remDegreesLongitude x =
+  DegreesLongitude (x `rem` 180)
diff --git a/src/Data/Geo/Coordinate/Minutes.hs b/src/Data/Geo/Coordinate/Minutes.hs
--- a/src/Data/Geo/Coordinate/Minutes.hs
+++ b/src/Data/Geo/Coordinate/Minutes.hs
@@ -5,7 +5,7 @@
 module Data.Geo.Coordinate.Minutes(
   Minutes
 , AsMinutes(..)
-, modMinutes
+, remMinutes
 ) where
 
 import Control.Applicative(Applicative)
@@ -15,9 +15,8 @@
 import Data.Maybe(Maybe(Just, Nothing))
 import Data.Eq(Eq)
 import Data.Int(Int)
-import Data.Fixed(mod')
 import Data.Ord(Ord((>=), (<)))
-import Prelude(Show)
+import Prelude(Show, rem)
 
 -- $setup
 -- >>> import Control.Lens((#), (^?), (^.))
@@ -59,24 +58,24 @@
                then Just (Minutes i)
                else Nothing)       
 
--- | Setting a value `>= 60` will get that value `(`mod` 60)`.
+-- | Setting a value `>= 60` will get that value `(`rem` 60)`.
 --
--- >>> modMinutes 7
+-- >>> remMinutes 7
 -- Minutes 7
 --
--- >>> modMinutes 0
+-- >>> remMinutes 0
 -- Minutes 0
 --
--- >>> modMinutes 60
+-- >>> remMinutes 60
 -- Minutes 0
 --
--- >>> modMinutes 1
+-- >>> remMinutes 1
 -- Minutes 1
 --
--- >>> modMinutes 59
+-- >>> remMinutes 59
 -- Minutes 59 
-modMinutes ::
+remMinutes ::
   Int
   -> Minutes
-modMinutes x =
-  Minutes (x `mod'` 60)
+remMinutes x =
+  Minutes (x `rem` 60)
diff --git a/src/Data/Geo/Coordinate/Seconds.hs b/src/Data/Geo/Coordinate/Seconds.hs
--- a/src/Data/Geo/Coordinate/Seconds.hs
+++ b/src/Data/Geo/Coordinate/Seconds.hs
@@ -5,7 +5,7 @@
 module Data.Geo.Coordinate.Seconds(
   Seconds
 , AsSeconds(..)
-, modSeconds
+, remSeconds
 ) where
 
 import Control.Applicative(Applicative)
@@ -13,10 +13,12 @@
 import Control.Lens(prism', Optic', Choice)
 import Data.Bool((&&))
 import Data.Eq(Eq)
-import Data.Fixed(mod')
+import Data.Int(Int)
+import Data.Fixed(divMod')
 import Data.Ord(Ord((>), (>=), (<)))
 import Data.Maybe(Maybe(Just, Nothing))
 import Data.List((++))
+import Data.Tuple(snd)
 import Prelude(Double, Show(showsPrec), showParen, showString)
 import Text.Printf(printf)
 
@@ -69,27 +71,27 @@
                then Just (Seconds d)
                else Nothing)
 
--- | Setting a value `>= 60` will get that value `(`mod` 60)`.
+-- | Setting a value `>= 60` will get that value `(`rem` 60)`.
 --
--- >>> modSeconds 7
+-- >>> remSeconds 7
 -- Seconds 7.0000
 --
--- >>> modSeconds 0
+-- >>> remSeconds 0
 -- Seconds 0.0000
 --
--- >>> modSeconds (-0.0001)
+-- >>> remSeconds (-0.0001)
 -- Seconds 59.9999
 --
--- >>> modSeconds 60
+-- >>> remSeconds 60
 -- Seconds 0.0000
 --
--- >>> modSeconds 59.99999
+-- >>> remSeconds 59.99999
 -- Seconds 60.0000
 --
--- >>> modSeconds 59.999
+-- >>> remSeconds 59.999
 -- Seconds 59.9990
-modSeconds ::
+remSeconds ::
   Double
   -> Seconds
-modSeconds x =
-  Seconds (x `mod'` 60)
+remSeconds x =
+  Seconds (snd (x `divMod'` 60.0 :: (Int, Double)))
