diff --git a/Data/WrapAround.hs b/Data/WrapAround.hs
--- a/Data/WrapAround.hs
+++ b/Data/WrapAround.hs
@@ -13,16 +13,16 @@
   of the plane, and a 'WrapPoint', which stores information about the location of
   the point.
 
+  When you need the actual x, y coordinates, use the 'toCoords' conversion
+  function.
+
   A WrapPoint is represented internally as a pair of angles, like in a torus.
   The WrapMap and WrapPoint structures are kept separate because some WrapPoint
   calculations can be performed without a WrapMap context. Functions typically
   only need a WrapMap when a WrapPoint must be converted to actual x, y
-  coordinates or vice versa. You can perform calculations mixing WrapPoints that
-  were generated with different WrapMaps, but this generally yields meaningless
-  results.
-
-  When you need the actual x, y coordinates, use the 'toCoords' conversion
-  function.
+  coordinates or vice versa. Typically you do not want perform calculations with
+  WrapPoints that were generated with different WrapMaps, but this is possible
+  and sometimes useful.
 
   If you are grateful for this software, I gladly accept donations!
 
@@ -115,25 +115,6 @@
     let angler' = fixAngle (angler wp1 - angler wp2) in
     WrapPoint { angleR = angleR', angler = angler' }
 
--- distance :: WrapMap -> WrapPoint -> WrapPoint -> Double
--- distance WrapMap { radiusR = mRadiusR, radiusr = mRadiusr }
---          WrapPoint { angleR = p1angleR, angler = p1angler }
---          WrapPoint { angleR = p2angleR, angler = p2angler }
---   = let dXa = abs (p2angler - p1angler) in
---     let dYa = abs (p2angleR - p1angleR) in
---     let dXb = if p1angler < p2angler
---                 then abs ((p1angler + 2 * pi) - p2angler)
---                 else abs ((p1angler - 2 * pi) - p2angler) in
---     let dYb = if p1angleR < p2angleR
---                 then abs ((p1angleR + 2 * pi) - p2angleR)
---                 else abs ((p1angleR - 2 * pi) - p2angleR) in
---     let dX = min dXa dXb in
---     let dY = min dYa dYb in
---     let dX' = dX * mRadiusr in
---     let dY' = dY * mRadiusR in
---     sqrt (dX'**2 + dY'**2)
-
-
 -- |Finds the distance between two WrapPoints.
 distance :: WrapMap    -- ^ The corresponding WrapMap structure
          -> WrapPoint  -- ^ The first WrapPoint
@@ -167,8 +148,16 @@
     let dYb = if p1angleR < p2angleR
                 then abs ((p1angleR + 2 * pi) - p2angleR)
                 else abs ((p1angleR - 2 * pi) - p2angleR) in
-    let dX = min dXa dXb in
-    let dY = min dYa dYb in
+    let dX = if dXa <= dXb
+                then p2angler - p1angler
+                else if p1angler <= p2angler
+                        then (p2angler - 2 * pi) - p1angler
+                        else (p2angler + 2 * pi) - p1angler in
+    let dY = if dYa <= dYb
+                then p2angleR - p1angleR
+                else if p1angleR <= p2angleR
+                     then (p2angleR - 2 * pi) - p1angleR
+                     else (p2angleR + 2 * pi) - p1angleR in
     let dX' = dX * mRadiusr in
     let dY' = dY * mRadiusR in
     (dX', dY')
diff --git a/wraparound.cabal b/wraparound.cabal
--- a/wraparound.cabal
+++ b/wraparound.cabal
@@ -3,7 +3,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             0.0.1
+Version:             0.0.1.1
 
 -- A short (one-line) description of the package.
 Synopsis:            Convenient handling of points on a seamless 2-dimensional plane
