anchor.diff:  function Min(Values: array of Single): Single; overload;
   function PickMin(Values: array of Single): Byte;
   
  -function Max(const A,B,C: integer):integer; overload;
  -function Max(const A,B,C: single):single; overload;
  +function Max(const A,B,C: Integer): Integer; overload;
  +function Max(const A,B,C: Single): Single; overload;
   
     function GetLengthSQR(ix,iy,iz:integer): integer; //Length without SQRT
     function GetLength(ix,iy,iz:single): single; overload;
  
positive.code: 
  {$IFDEF WDC}
  procedure SwapInt(var A,B: NativeUInt);
  var s:NativeUInt;
  begin
    s:=A; A:=B; B:=s;
  end;
  {$ENDIF}
  
  procedure SwapFloat(var A,B:single);
  var s:single;
  begin
    s:=A; A:=B; B:=s;
  end;
  
  
  function Equals(A,B:single; const Epsilon:single=0.001):boolean;
  begin
    Result := abs(A-B) <= Epsilon;
  end;
  
  
  function Adler32CRC(TextPointer: Pointer; TextLength: Cardinal): Cardinal;
  var
    i, A, B: Cardinal;
  begin
    A := 1;
    B := 0; // A is initialized to 1, B to 0
    for i := 1 to TextLength do
    begin
      inc(A, pbyte(Cardinal(TextPointer) + i - 1)^);
      inc(B, A);
    end;
    A := A mod 65521; // 65521 (the largest prime number smaller than 2^16)
    B := B mod 65521;
  
negative.code: begin
    Result := 0;
    if not FileExists(aPath) then
      Exit;
  
    S := TMemoryStream.Create;
    try
  