anchor.diff:    LoadStream.Read(fStep);
     LoadStream.Read(fHouse, 4);
     LoadStream.Read(fUnit, 4);
  +  LoadStream.Read(fPushedUnit, 4);
     LoadStream.Read(fDirection, SizeOf(fDirection));
     LoadStream.Read(fDoor);
     LoadStream.Read(fStreet);
  
positive.code: begin
    Inherited;
    fHouse := fPlayers.GetHouseByID(cardinal(fHouse));
    fUnit := fPlayers.GetUnitByID(cardinal(fUnit))
  end;
  
  
  destructor TUnitActionGoInOut.Destroy;
  begin
    if fUsedDoorway then DecDoorway;
    fPlayers.CleanUpHousePointer(fHouse);
    //A bug can occur because this action is destroyed early when a unit is told to die. If we are still invisible
    //then TTaskDie assumes we are inside and creates a new GoOut action. Therefore if we are invisible we do not occupy a tile.
    if (fDirection = gd_GoOutside) and (fHasStarted) and (fUnit<>nil) and (not fUnit.Visible) and
      (fTerrain.Land[fUnit.NextPosition.Y,fUnit.NextPosition.X].IsUnit = fUnit) then
    begin
      fTerrain.UnitRem(fUnit.NextPosition);
      if not KMSamePoint(fDoor, KMPoint(0,0)) then fUnit.PositionF := KMPointF(fDoor); //Put us back inside the house
    end;
    if (fUnit <> nil) and (fDirection = gd_GoOutside) and (fUnit.Visible) then fUnit.SetInHouse(nil); //We are not in any house now
    fPlayers.CleanUpUnitPointer(fUnit);
    Inherited;
  end;
  
  
negative.code: begin
    Result := ActContinues;
  
    if not fHasStarted then 
    begin
      //Set Door and Street locations
      fDoor := KMPoint(fUnit.GetPosition.X, fUnit.GetPosition.Y - round(fStep));
      fStreet := KMPoint(fUnit.GetPosition.X, fUnit.GetPosition.Y + 1 - round(fStep));
  
  