diff --git a/lib/geocoder/calculations.rb b/lib/geocoder/calculations.rb
index 8375a0f7b9fc33abfcb1c90bccdb158933550c4e..e85e6677c51974bae41484e535f73479ffe3966d 100644
--- a/lib/geocoder/calculations.rb
+++ b/lib/geocoder/calculations.rb
@@ -21,12 +21,6 @@ module Geocoder
       # set default options
       options[:units] ||= :mi
 
-      # define conversion factors
-      conversions = {
-        :mi => earth_radius,
-        :km => earth_radius / km_in_mi
-      }
-
       # convert degrees to radians
       lat1 = to_radians(lat1)
       lon1 = to_radians(lon1)
@@ -40,7 +34,7 @@ module Geocoder
       a = (Math.sin(dlat / 2))**2 + Math.cos(lat1) *
           (Math.sin(dlon / 2))**2 * Math.cos(lat2)
       c = 2 * Math.atan2( Math.sqrt(a), Math.sqrt(1-a))
-      c * conversions[options[:units]]
+      c * earth_radius(options[:units])
     end
 
     ##
@@ -117,11 +111,12 @@ module Geocoder
     end
 
     ##
-    # Radius of the earth, in miles.
-    # Taken from: http://en.wikipedia.org/wiki/Earth_radius
+    # Radius of the earth in the given units (:mi or :km). Default is :mi.
+    # Values taken from: http://en.wikipedia.org/wiki/Earth_radius
     #
-    def earth_radius
-      3959.0
+    def earth_radius(units = :mi)
+      in_km = 6371.0
+      units == :km ? in_km : in_km * km_in_mi
     end
 
     ##