anchor.diff:        begin
           NewFilename := StrPas(pfdin^.psz1);
           if (NewFilename = Archive.FItemInProgress.FileName) then begin
  -          if not (eoRestorePath in Archive.ExtractOptions) then
  -            NewFilename := ExtractFileName(NewFileName);
  -          if (Archive.BaseDirectory <> '') then
  -            NewFilename := Archive.BaseDirectory + '\' + NewFilename;
  +          if Archive.FIIPName <> '' then
  +            NewFilename := Archive.FIIPName
  +          else begin
  +            if not (eoRestorePath in Archive.ExtractOptions) then
  +              NewFilename := ExtractFileName(NewFileName);
  +            if (Archive.BaseDirectory <> '') then
  +              NewFilename := Archive.BaseDirectory + '\' + NewFilename;
  +          end;
             NewFilePath := ExtractFilePath(NewFilename);
             if (Length(NewFilePath) > 0 ) and
               (NewFilePath[Length(NewFilePath)] = '\') then
  
positive.code:   Result := atCab;
    CabArchive := TAbCabArchive.Create(Fn, fmOpenRead or fmShareDenyNone);
    try
      CabArchive.LoadArchive;
    except
      on EAbFDICreateError do
        Result := atUnknown;
    end;
  end;
  
  
negative.code:     FErrors          : CabErrorRecord;
      FFileHandle      : Integer;
      FItemInProgress  : TAbCabItem;
      FIIPName         : string;
      FItemProgress    : DWord;
      FNextCabinet     : string;
      FNextDisk        : string;
  