anchor.diff:    if (degreesDifference > areaToEdge) {
       centerLongitude -= resolution;
     } else if (degreesDifference < -areaToEdge) {
  +    centerLongitude += resolution;
  +  }
  +
  +  // How many degrees longitude is the code from the reference?
  +  if (referenceLongitude + halfResolution < centerLongitude) {
  +    centerLongitude -= resolution;
  +  } else if (referenceLongitude - halfResolution > centerLongitude) {
       centerLongitude += resolution;
     }
   
  
positive.code:   // Compute the number of digits we need to recover.
    var paddingLength = separatorPosition - shortCode.indexOf(separator);
    // The resolution (height and width) of the padded area in degrees.
    var resolution = pow(20, 2 - (paddingLength / 2));
    // Distance from the center to an edge (in degrees).
    var areaToEdge = resolution / 2.0;
  
    // Use the reference location to pad the supplied short code and decode it.
    var codeArea = decode(
  
negative.code:   var centerLongitude = codeArea.center.longitude;
  
    // How many degrees latitude is the code from the reference? If it is more
    // than half the resolution, we need to move it north or south but keep it
    // within -90 to 90 degrees.
    if (referenceLatitude + halfResolution < centerLatitude &&
        centerLatitude - resolution >= -LATITUDE_MAX_) {
      // If the proposed code is more than half a cell north of the reference location,
      // it's too far, and the best match will be one cell south.
      centerLatitude -= resolution;
    } else if (referenceLatitude - halfResolution > centerLatitude &&
               centerLatitude + resolution <= LATITUDE_MAX_) {
      // If the proposed code is more than half a cell south of the reference location,
      // it's too far, and the best match will be one cell north.
      centerLatitude += resolution;
    }
  
  