anchor.diff:  end;
   
   
  -function Adler32CRC(TextPointer: Pointer; TextLength: Cardinal): Cardinal;
  +function Adler32CRC(aPointer: Pointer; aLength: Cardinal): Cardinal;
  +const
  +  MAX_PRIME_16BIT = 65521; // 65521 is the largest prime number smaller than 2^16
   var
     I, A, B: Cardinal;
   begin
     A := 1;
     B := 0; // A is initialized to 1, B to 0
  -  for I := 1 to TextLength do
  +  for I := 1 to aLength do
     begin
  -    Inc(A, pbyte(Cardinal(TextPointer) + I - 1)^);
  +    Inc(A, pByte(Cardinal(aPointer) + I - 1)^);
       Inc(B, A);
     end;
  -  A := A mod 65521; // 65521 (the largest prime number smaller than 2^16)
  -  B := B mod 65521;
  +  A := A mod MAX_PRIME_16BIT;
  +  B := B mod MAX_PRIME_16BIT;
     Adler32CRC := B + A shl 16; // reverse order for smaller numbers
   end;
   
  
positive.code:   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;
  
negative.code:   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 MAX_PRIME_16BIT;
      end;
    A := A mod MAX_PRIME_16BIT;
    Result := B + A shl 16; // reverse order for smaller numbers
  end;
  
  