anchor.diff:  
     if not Result then exit;
   
  -  if not (fTerrain.Land[aLocY, aLocX].IsUnit = nil) then begin
  +  //If there's some unit we need to do a better check on him
  +  if (fTerrain.Land[aLocY, aLocX].IsUnit <> nil) then
  +  begin
       U := fTerrain.UnitsHitTest(aLocX, aLocY); //Let's see who is standing there
       Result := (U <> nil) and (U.GetUnitAction is TUnitActionStay)
                                and (not TUnitActionStay(U.GetUnitAction).Locked);
       if Result then
  -      U.SetActionWalkPushed( fTerrain.GetOutOfTheWay(U.GetPosition,KMPoint(0,0),CanWalk) );
  +      U.SetActionWalkPushed( fTerrain.GetOutOfTheWay(U.GetPosition, KMPoint(0,0), CanWalk) );
     end;
   end;
   
   
  +procedure TUnitActionGoInOut.WalkIn(aUnit:TKMUnit);
  +begin
  +  aUnit.Direction := dir_N;  //one cell up
  +  aUnit.Thought := th_None;
  +  aUnit.UpdateNextPosition(KMPoint(aUnit.GetPosition.X, aUnit.GetPosition.Y-1));
  +  fTerrain.UnitRem(aUnit.GetPosition); //Unit does not occupy a tile while inside
  +end;
  +
  +
   procedure TUnitActionGoInOut.WalkOut(aUnit:TKMUnit);
   begin
  -  aUnit.Direction := KMGetDirection(KMPointRound(fDoor) ,fStreet);
  +  aUnit.Direction := KMGetDirection(KMPointRound(fDoor), fStreet);
     aUnit.UpdateNextPosition(fStreet);
     fTerrain.UnitAdd(aUnit.NextPosition, aUnit); //Unit was not occupying tile while inside
     if (aUnit.GetHome <> nil)
  
positive.code:   fDirection      := aDirection;
    fHasStarted     := false;
    fWaitingForPush := false;
    fUsingDoorway   := true;
  
    if fDirection = gd_GoInside then
      fStep := 1  //go Inside (one cell up)
  
negative.code:       fDirection:TGoInDirection;
        fDoor:TKMPointF;
        fStreet:TKMPoint;
        fHasStarted:boolean;
        fWaitingForPush:boolean;
        fUsedDoorway:boolean;
        procedure IncDoorway;
        procedure DecDoorway;
        function FindBestExit(aLoc:TKMPoint; aUnit:TKMUnit):TBestExit;
        function ValidTileToGo(aLocX, aLocY:word; aUnit:TKMUnit):boolean; //using X,Y looks more clear
        procedure WalkIn(aUnit:TKMUnit);
        procedure WalkOut(aUnit:TKMUnit);
      public
        constructor Create(aAction: TUnitActionType; aDirection:TGoInDirection; aHouse:TKMHouse);
  