anchor.diff:        end;
     end;
   
  -var
  -  I, K, ColorID, colorsNeeded: Integer;
  +  function IsFixedPlayerColor(aLocIndex: Integer): Boolean;
  +  var
  +    fixedColorsSet: Boolean;
  +  begin
  +    fixedColorsSet := Length(aFixedLocsColors) > 0;
  +    Result := not fNetPlayers[aLocIndex].IsSpectator // we should always count on specs color
  +              and fixedColorsSet
  +              and (aFixedLocsColors[fNetPlayers[aLocIndex].HandIndex] <> 0);
  +  end;
  +
  +var
  +  I, K, colorID, colorsNeeded: Integer;
     colorDist: Single;
  -  FixedColorsSet: Boolean;
  -begin
  -  FixedColorsSet := Length(aFixedLocsColors) > 0;
  +begin
  +
     // Set known fixed colors
     // Fixed are AI only locs colors
     // and every loc color, if BlockPlayerColor parametr is set
     for I := 1 to fCount do
  -    if not fNetPlayers[I].IsSpectator
  -      and FixedColorsSet
  -      and (aFixedLocsColors[fNetPlayers[I].HandIndex] <> 0) then
  +    if IsFixedPlayerColor(I) then
         fNetPlayers[I].FlagColor := aFixedLocsColors[fNetPlayers[I].HandIndex];
   
     //All wrong colors will be reset to random
  
positive.code:       Inc(colorsNeeded);
  
      // Ignore fixed colors for non-specs
      if FixedColorsSet
        and (aFixedLocsColors[fNetPlayers[I].HandIndex] <> 0)
        and not fNetPlayers[I].IsSpectator then
        Continue;
  
      ColorID := FindMPColor(fNetPlayers[I].FlagColor);
  
      if UsedColor[ColorID] then
      begin
        fNetPlayers[I].ResetColor;
      end else begin
        UsedColor[ColorID] := True;
      end;
    end;
  
  
negative.code:   for I := 1 to fCount do
    begin
      // Ignore fixed colors for non-specs
      if IsFixedPlayerColor(I) then
        Continue;
  
      if not fNetPlayers[I].IsColorSet then
  