anchor.diff:    fOrderLoc := aLoc;
     PassedCommander := false;
   
  -  if (fMembers <> nil)and(fCommander=nil) then //Don't give group orders if unit has no crew
  +  if (fCommander=nil)and(fMembers <> nil) then //Don't give group orders if unit has no crew
     for i:=1 to fMembers.Count+1 do
     begin
  -    px:=(i-1) mod fUnitsPerRow - fUnitsPerRow div 2;
  -    py:=(i-1) div fUnitsPerRow;
  +    px := (i-1) mod fUnitsPerRow - fUnitsPerRow div 2;
  +    py := (i-1) div fUnitsPerRow;
   
       if (not PassedCommander) and (KMSamePoint(aLoc.Loc,GetPositionInGroup(aLoc.Loc.X, aLoc.Loc.Y, TKMDirection(aLoc.Dir+1), px, py))) then
  -    begin
  -      //Skip commander
  -      PassedCommander := true;
  -    end
  +      PassedCommander := true //Skip commander
       else
       begin
         NewLoc := GetPositionInGroup(aLoc.Loc.X, aLoc.Loc.Y, TKMDirection(aLoc.Dir+1), px, py);
  
positive.code:     else
        fThought:=th_None;
  
    //Tell the player to feed us if we are hungry and a commander
    //todo: This shouldn't run every tick
    if (fOwner = MyPlayer.PlayerID) and (fCommander = nil) then
    begin
      SomeoneHungry := (fCondition < UNIT_MIN_CONDITION);
      if (fMembers <> nil) and (not SomeoneHungry) then
        for i:=0 to fMembers.Count-1 do
        begin
  
negative.code:   //Make sure we are a commander and have a crew //Don't allow to split in following cases
    if (fCommander <> nil) or (fMembers = nil) or (fMembers.Count = 0) then exit;
  
    //If there are different unit types in the group, split should just split them first
    MultipleTypes := false;
    NewCommander  := nil; //init
    for i := 0 to fMembers.Count-1 do
      if TKMUnitWarrior(fMembers.Items[i]).GetUnitType <> fUnitType then
      begin
  