anchor.diff:  
       RemAllClosedPlayers; //Closed players are just a marker in the lobby, delete them when the game starts
   
  +    gLog.AddTime('Randomizing locs...');
       gLog.AddTime(LocFiller.ToString);
  -
  -    gLog.AddTime('Randomizing locs...');
   
       //Randomize all available lists (don't use KaMRandom - we want varied results and PlayerList is synced to clients before start)
       for PT := Low(TPlayerType) to High(TPlayerType) do
       begin
  -      LocsArr := LocFiller.GetLocsIByPlayerType(PT);
  +      LocsArr := LocFiller.GetLocsToSwap(PT);
         for I := 0 to High(LocsArr) do
           LocFiller.SwapLocsPlayers(LocsArr[I], LocsArr[Random(Length(LocsArr))]);
       end;
  
positive.code:     for I := 0 to High(LocFiller.Players) do
        fNetPlayers[LocFiller.Players[I].ID].StartLocation := LocFiller.Players[I].LocID;
  
      gLog.AddTime(LocFiller.ToString);
    finally
      LocFiller.Free;
    end;
  
negative.code:     function FFOToStr(aFO: TFullFillOrder): String;
      function LocToStr(aLoc: TLoc): String;
      function PlayerToStr(aPlayer: TPlayer): String;
      function GetLocsToSwap(aPlayerType: TPlayerType): TIntegerArray;
      function ToString: UnicodeString;
      procedure SwapLocsPlayers(aLocI1, aLocI2: Integer);
    end;
  