anchor.diff:  function TryToConvertToDouble(aValue: string; out aOutValue: Double): boolean;
   function TryToConvertToInteger(aValue: string; out aOutValue: Integer): boolean;
   function TryToConvertToInt64(aValue: string; out aOutValue: Int64): boolean;
  -function IsNumeric(const aValue: string; const aAllowFloat: Boolean): Boolean;
  +function IsNumeric(const aValue: string; const aAllowFloat, aAllowSigns: Boolean): Boolean;
   function ExtractFirstInteger(aValue: string; out aOutValue: Integer): boolean;
   
   implementation
  
positive.code:   end;
  end;
  
  function IsNumeric(const aValue: string; const aAllowFloat: Boolean): Boolean;
  var
    i, lg : integer;
    tmpDouble : double;
  begin
    if aAllowFloat then
      Result := TryToConvertToDouble(aValue, tmpDouble)
    else
    begin
      Result := false;
      lg := Length(aValue);
      if lg = 0 then
        exit;
      for i := 1 to lg do
      begin
        if not (aValue[i] in ['0'..'9','-', '+']) then
          exit;
      end;
      Result := true;
    end;
  end;
  
  function ExtractFirstInteger(aValue: string; out aOutValue: Integer): boolean;
  
negative.code:   candidate := '';
    for i := 1 to Length(aValue) do
    begin
      if IsNumeric(aValue[i], false, false) then
        candidate := candidate + aValue[i]
      else if candidate <> '' then
        break;
  