diff --git a/Data/GPS.hs b/Data/GPS.hs
--- a/Data/GPS.hs
+++ b/Data/GPS.hs
@@ -4,36 +4,36 @@
 -- are in meters and time is in seconds.  Speed is thus meters/second
 
 module Data.GPS
-	( -- * Types
-	  Distance
-	, Heading
-	, Speed
-	, Vector
-	, Trail
-	-- * Constants
-	, north
-	, south
-	, east
-	, west
-	, radiusOfEarth
-	-- * Coordinate Functions
-	, heading
-	, distance
-	, speed
-	, addVector
-	, getRadianPair
-	, getDMSPair
-	, divideArea
-        -- * Trail Functions
-	, totalDistance
-	, restLocations
-	, closestDistance
-	, filterByMaxSpeed
-	, convexHull
-	-- * Other helpers
-	, readGPX
-	, module Data.Geo.GPX
-	) where
+       ( -- * Types
+         Distance
+       , Heading
+       , Speed
+       , Vector
+       , Trail
+         -- * Constants
+       , north
+       , south
+       , east
+       , west
+       , radiusOfEarth
+         -- * Coordinate Functions
+       , heading
+       , distance
+       , speed
+       , addVector
+       , getRadianPair
+       , getDMSPair
+       , divideArea
+         -- * Trail Functions
+       , totalDistance
+       , restLocations
+       , closestDistance
+       , filterByMaxSpeed
+       , convexHull
+         -- * Other helpers
+       , readGPX
+       , module Data.Geo.GPX
+       ) where
 
 import Data.Function (on)
 import Data.Ord (comparing)
@@ -69,7 +69,7 @@
 
 distance :: (Lat a, Lon a, Lat b, Lon b) => a -> b -> Distance
 distance a b =
-	let x =  sin lat1 * sin lat2 + cos lat1 * cos lat2 * cos (lon2 - lon1)
+	let x  = sin lat1 * sin lat2 + cos lat1 * cos lat2 * cos (lon2 - lon1)
 	    x' = if x > 1 then 1 else x
 	in radiusOfEarth * acos x'
  where
@@ -96,12 +96,14 @@
 -- | Speed in meters per second, only if a 'Time' was recorded for each waypoint.
 speed :: (Lat loc, Lon loc, Time loc, Lat b, Lon b, Time b) => loc -> b -> Maybe Speed
 speed a b = 
-	case (getUTCTime b, getUTCTime a) of
-		(Just x, Just y) -> Just $ realToFrac (diffUTCTime x y) / (distance a b)
-		_ -> Nothing
+  case (getUTCTime b, getUTCTime a) of
+    (Just x, Just y) -> 
+      let timeDiff = realToFrac (diffUTCTime x y)
+      in if timeDiff == 0 then Nothing else Just $ (distance a b) / timeDiff
+    _ -> Nothing
 
--- |Filter out all points that result in a speed greater than a given value
--- (the second point is dropped)
+-- |Filter out all points that result in a speed greater than a given
+-- value (the second point is dropped)
 filterByMaxSpeed :: (Lat loc, Lon loc, Time loc) => Speed -> Trail loc -> Trail loc
 filterByMaxSpeed mx xs =
 	let ss = zipWith speed xs (drop 1 xs)
diff --git a/gps.cabal b/gps.cabal
--- a/gps.cabal
+++ b/gps.cabal
@@ -1,5 +1,5 @@
 name:		gps
-version:	0.6.2
+version:	0.7
 license:	BSD3
 license-file:	LICENSE
 author:		Thomas DuBuisson <thomas.dubuisson@gmail.com>
