anchor.diff:        Result := 1
       else
       begin
  -      tmpLongint1 := 0;
  -      tmpLongint2 := 0;
  -      Move(Bookmark1, tmpLongint1, BookmarkSize);
  -      Move(Bookmark2, tmpLongint2, BookmarkSize);
  -      if tmpLongint1 < tmpLongint2 then
  +      if PInteger(Bookmark1)^ < PInteger(Bookmark2)^ then
           Result := -1
  -      else if tmpLongint1 > tmpLongint2 then
  +      else if PInteger(Bookmark1)^ > PInteger(Bookmark2)^ then
           Result := 1
         else
           Result := 0;
       end;
     end;
  -
  -(*  Result := RetCodes[Bookmark1 = nil, Bookmark2 = nil];
  +end;
  +(*
  +function TmCustomVirtualDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark)
  +  : Integer;
  +const
  +  RetCodes: array [Boolean, Boolean] of ShortInt = ((2, -1), (1, 0));
  +
  +begin
  +  Result := RetCodes[Bookmark1 = nil, Bookmark2 = nil];
     if Result = 2 then
     begin
       if PInteger(Bookmark1)^ < PInteger(Bookmark2)^ then
  
positive.code: end;
  
  procedure TmCustomVirtualDataset.InternalOpen;
  begin
    FInternalOpen := True;
    InternalFirst;
  
negative.code: end;
  
  function TmCustomVirtualDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Longint;
  begin
    if (Bookmark1 = nil) then
    begin
  