anchor.diff:    BytesRead : Longint;
     SeekResult: Int64;
   begin
  -  if (vmsSwapHandle = 0) or (aPage^.vpStmOfs >= vmsSwapFileSize) then begin
  +  if (vmsSwapStream = nil) or (aPage^.vpStmOfs >= vmsSwapFileSize) then begin
       {there is nothing to be read from the disk (either the swap file
        doesn't exist or it's too small) so zero out the page data}
       FillChar(aPage^.vpData, AB_VMSPageSize, 0)
     end
     else {there is something to be read from the swap file} begin
  -    SeekResult := FileSeek(vmsSwapHandle, aPage^.vpStmOfs, 0);
  +    SeekResult := vmsSwapStream.Seek(aPage^.vpStmOfs, soBeginning);
       if (SeekResult = -1) then
         raise EAbVMSSeekFail.Create( vmsSwapFileName );
  -    BytesRead := FileRead(vmsSwapHandle, aPage^.vpData, AB_VMSPageSize);
  +    BytesRead := vmsSwapStream.Read(aPage^.vpData, AB_VMSPageSize);
       if (BytesRead <> AB_VMSPageSize) then
  -      raise EAbVMSReadFail.Create( AB_VMSPageSize, vmsSwapFileName );  
  +      raise EAbVMSReadFail.Create( AB_VMSPageSize, vmsSwapFileName );
     end;
   end;
   {--------}
   procedure TAbVirtualMemoryStream.vmsSwapFileWrite(aPage : PvmsPage);
   var
  -  NewPos : Int64;        
  +  NewPos : Int64;
     SeekResult: Int64;
     BytesWritten : Longint;
   begin
  -  if (vmsSwapHandle = 0) then
  +  if (vmsSwapStream = nil) then
       vmsSwapFileCreate;
  -  SeekResult := FileSeek(vmsSwapHandle, aPage^.vpStmOfs, 0);
  +  SeekResult := vmsSwapStream.Seek(aPage^.vpStmOfs, soBeginning);
     if (SeekResult = -1) then
  -    raise EAbVMSSeekFail.Create( vmsSwapFileName );                    
  -  BytesWritten := FileWrite(vmsSwapHandle, aPage^.vpData, AB_VMSPageSize);
  +    raise EAbVMSSeekFail.Create( vmsSwapFileName );
  +  BytesWritten := vmsSwapStream.Write(aPage^.vpData, AB_VMSPageSize);
     if BytesWritten <> AB_VMSPageSize then
       raise EAbVMSWriteFail.Create( AB_VMSPageSize, vmsSwapFileName );   
     NewPos := aPage^.vpStmOfs + AB_VMSPageSize;
  
positive.code: {--------}
  procedure TAbVirtualMemoryStream.vmsSwapFileDestroy;
  begin
    if (vmsSwapHandle <> 0) then begin
      FileClose(vmsSwapHandle);
      DeleteFile(vmsSwapFileName);
      vmsSwapHandle := 0;
    end;
  end;
  {--------}
  
negative.code:       vmsSwapFileDir  : string;     {swap file directory}
        vmsSwapFileName : string;     {swap file name}
        vmsSwapFileSize : Int64;      {size of swap file}
        vmsSwapStream   : TFileStream;{swap file stream}
      protected
        procedure vmsSetMaxMemToUse(aNewMem : Longword);
  
  