anchor.diff:    //Records must be packed so they are stored identically in MP saves (padding bytes are unknown values)
     TKMPoint = record
       X,Y: Integer;
  +
  +    function ToString: String;
  +
       class operator Equal(const A, B: TKMPoint): Boolean;
       class operator NotEqual(const A, B: TKMPoint): Boolean;
  -    function ToString: String;
  -    constructor New(aX, aY: Integer);
  +    class operator Add(const A, B: TKMPoint): TKMPoint;
  +    class function New(aX, aY: Integer): TKMPoint; static;
     end;
   
     TKMPointF = record
  
positive.code:   SysUtils, TypInfo, Math, KM_CommonUtils;
  
  
  constructor TKMPoint.New(aX, aY: Integer);
  begin
    X := aX;
    Y := aY;
  end;
  
  class operator TKMPoint.Equal(const A, B: TKMPoint): Boolean;
  begin
  
negative.code: begin
    Result := not KMSamePoint(A,B);
  end;
  
  
  class operator TKMPoint.Add(const A, B: TKMPoint): TKMPoint;
  begin
    Result := KMPoint(A.X + B.X,A.Y + B.Y);
  end;
  
  
  function TKMPoint.ToString: String;
  begin
  