anchor.diff:    procedure SwapInt(var A, B: NativeUInt); overload;
     {$ENDIF}
     procedure SwapFloat(var A, B: Single);
  -  function Equals(A, B: single; const Epsilon: single = 0.001): Boolean;
  -
  -function MakePOT(num:integer): integer;
  -function Adler32CRC(TextPointer:Pointer; TextLength:cardinal):cardinal; overload;
  -function Adler32CRC(const aPath:string):cardinal; overload;
  -function Adler32CRC(S:TMemoryStream):cardinal; overload;
  +  function Equals(A, B: single; const Epsilon: Single = 0.001): Boolean;
  +
  +function MakePOT(num: Integer): Integer;
  +function Adler32CRC(TextPointer: Pointer; TextLength: Cardinal): Cardinal; overload;
  +function Adler32CRC(const aPath: string): Cardinal; overload;
  +function Adler32CRC(S: TMemoryStream): Cardinal; overload;
   function RandomS(Range_Both_Directions:integer):integer; overload;
   function RandomS(Range_Both_Directions:single):single; overload;
   function PseudoRandom(aMax:cardinal):cardinal;
  
positive.code: 
  function Adler32CRC(S: TMemoryStream): Cardinal;
  var
    i, A, B: Cardinal;
  begin
    A := 1;
    B := 0; // A is initialized to 1, B to 0
  
    // We need to MOD B within cos it may overflow in files larger than 65kb, A overflows with files larger than 16mb
    if S.Size <> 0 then
      for i := 0 to S.Size - 1 do
      begin
        inc(A, pbyte(Cardinal(S.Memory) + i)^);
        B := (B + A) mod 65521; // 65521 (the largest prime number smaller than 2^16)
      end;
    A := A mod 65521;
  
negative.code: begin
    Result := 0;
    if not FileExists(aPath) then
      Exit;
  
    S := TMemoryStream.Create;
    try
  