anchor.diff:  /// columns than rows.
   int computeLatitudePrecision(int codeLength) {
     if (codeLength <= 10) {
  -    return pow(20, (codeLength ~/ -2) + 2);
  -  }
  -  return pow(20, -3) ~/ pow(gridRows, codeLength - 10);
  +    return pow(encodingBase, (codeLength ~/ -2) + 2);
  +  }
  +  return pow(encodingBase, -3) ~/ pow(gridRows, codeLength - 10);
   }
   
   /// Normalize a [longitude] into the range -180 to 180, not including 180.
  
positive.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 east or west.
    var degreesDifference = centerLatitude - referenceLatitude;
    if (degreesDifference > areaToEdge) {
      // If the center of the short code is more than half a cell east,
      // then the best match will be one position west.
      centerLatitude -= resolution;
    } else if (degreesDifference < -areaToEdge) {
      // If the center of the short code is more than half a cell west,
      // then the best match will be one position east.
      centerLatitude += resolution;
    }
  
  
negative.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(encodingBase, 2 - (paddingLength / 2));
    // Distance from the center to an edge (in degrees).
    var halfResolution = resolution / 2.0;
  
    // Use the reference location to pad the supplied short code and decode it.
    var codeArea = decode(
  