anchor.diff:      begin
         fWaitingForPush := false;
         KMUnit.Direction := KMGetDirection(KMPointRound(fDoor) ,fStreet);
  -      KMUnit.NextPosition := fStreet;
  +      KMUnit.NextPosition := fStreet; //@Lewin: I don't like this part, Prev/Next should be different
         fTerrain.UnitWalk(KMUnit.GetPosition,KMUnit.NextPosition);
         if (KMUnit.GetHome<>nil)and(KMUnit.GetHome.GetHouseType=ht_Barracks) then //Unit home is barracks
           TKMHouseBarracks(KMUnit.GetHome).RecruitsInside:=TKMHouseBarracks(KMUnit.GetHome).RecruitsInside - 1;
  
positive.code: 
  
  //Defines from where to where unit will be walking
  function TUnitActionGoInOut.DefineInOutLocations(aUnit: TKMUnit):boolean; //returns false if no location was found
  var TempUnit: TKMUnit;
  begin
    Result := false;
  
negative.code:     begin
        KMUnit.Direction := dir_N;  //one cell up
        KMUnit.Thought := th_None;
        KMUnit.PrevPosition := KMUnit.GetPosition; //@Krom: What do I need to do here?
        KMUnit.NextPosition := KMPoint(KMUnit.GetPosition.X,KMUnit.GetPosition.Y-1);
        fTerrain.UnitWalk(KMUnit.GetPosition, KMUnit.NextPosition);
        if (KMUnit.GetHome<>nil) and (KMUnit.GetHome.GetHouseType=ht_Barracks) then //Units home is barracks
  