anchor.diff:  
   function KMStepIsDiag(P1,P2:TKMPoint):boolean;
   begin
  -  Result := ((sign(P2.X-P1.X) <> 0) and
  -             (sign(P2.Y-P1.Y) <> 0));
  +  Result := (sign(P2.X-P1.X) <> 0) and (sign(P2.Y-P1.Y) <> 0);
   end;
   
   
  
positive.code: function GetLength(A,B:TKMPointF): single; overload;
  begin
    Result := sqrt(sqr(A.x-B.x) + sqr(A.y-B.y));
  end;
  
  
  function GetLength(A:TKMPointF): single; overload;
  begin
    Result := sqrt(sqr(A.x) + sqr(A.y));
  end;
  
  
  function Normalize(var A:TKMPointF): TKMPointF;
  var Len:single;
  begin
    Len := GetLength(A);
    Result.X := A.X /Len;
    Result.Y := A.Y /Len;
  end;
  
  
  
negative.code: begin
    Result := ( P1.X = P2.X ) and ( P1.Y = P2.Y );
  end;
  
  
  function KMSamePointF(P1,P2:TKMPointF; Epsilon:single): boolean;
  begin
  