Index: location.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/location/location.module,v
retrieving revision 1.245
diff -u -p -r1.245 location.module
--- location.module	17 Apr 2009 19:09:53 -0000	1.245
+++ location.module	28 Jul 2009 20:50:01 -0000
@@ -1138,6 +1138,19 @@ function location_save(&$location, $cow 
  * @return Whether or not there were any changes.
  */
 function location_calc_difference($oldloc, $newloc, &$changes) {
+  // Force locpick changes to apply to the location before stripping.
+  // See #424784 for more details.
+  if (isset($oldloc['locpick']) && !empty($oldloc['locpick']['user_latitude']) && !empty($oldloc['locpick']['user_longitude'])) {
+    $oldloc['source'] = LOCATION_LATLON_USER_SUBMITTED;
+    $oldloc['latitude'] = $oldloc['locpick']['user_latitude'];
+    $oldloc['longitude'] = $oldloc['locpick']['user_longitude'];
+  }
+  if (isset($newloc['locpick']) && !empty($newloc['locpick']['user_latitude']) && !empty($newloc['locpick']['user_longitude'])) {
+    $newloc['source'] = LOCATION_LATLON_USER_SUBMITTED;
+    $newloc['latitude'] = $newloc['locpick']['user_latitude'];
+    $newloc['longitude'] = $newloc['locpick']['user_longitude'];
+  }
+
   location_strip($oldloc);
   location_strip($newloc);
   $location_changed = FALSE;
