anchor.diff:  
       fOnUndoRedo: TEvent;
       fOnAddCheckpoint: TEvent;
  -    fUpdateTerrainNeeded: Boolean;
  +
  +    function GetPrevAreaCheckpointPos(aPos: Integer; aArea: TKMCheckpointArea): Integer;
   
       procedure IncCounter;
       procedure UpdateAll;
  +    procedure JumpTo(aIndex: Integer; aAreas: TKMCheckpointAreaSet); overload;
     public
       constructor Create;
       destructor Destroy; override;
  
positive.code: end;
  
  
  procedure TKMMapEditorHistory.JumpTo(aIndex: Integer);
  var
    I: Integer;
    undoRedoNeeded: Boolean;
  begin
    aIndex := EnsureRange(aIndex, 0, fCheckpoints.Count - 1);
    undoRedoNeeded := (aIndex <> fCheckpointPos);
    fUpdateTerrainNeeded := False;
    if aIndex < fCheckpointPos then
    begin
      for I := aIndex to fCheckpointPos - 1 do
        Undo(False);
    end
    else
    if aIndex > fCheckpointPos then
      for I := fCheckpointPos to aIndex - 1 do
        Redo(False);
  
    if undoRedoNeeded and Assigned(fOnUndoRedo) then
      fOnUndoRedo;
  
    // Update terrain once only after all undos/redos were done
    if fUpdateTerrainNeeded then
      UpdateAll;
  end;
  
  
  
negative.code:     // Hand Flag Color
      //
    );
  
    TKMCheckpointAreaSet = set of TKMCheckpointArea;
  
    TKMCheckpoint = class
    private
  