diff -Nru tremulous/src/game/g_cmds.c tremulous.temp/src/game/g_cmds.c
--- tremulous/src/game/g_cmds.c	2007-02-28 18:32:18.000000000 +0100
+++ tremulous.temp/src/game/g_cmds.c	2007-02-28 18:32:28.000000000 +0100
@@ -693,10 +693,11 @@
 
     if( !force && g_teamForceBalance.integer
       && ( ( level.numAlienClients > level.numHumanClients ) ||
-        ( ent->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS &&
+        ( ent->client->pers.teamSelection == PTE_HUMANS &&
           level.numAlienClients >= level.numHumanClients ) ) )
     {
-      G_TriggerMenu( ent - g_entities, MN_A_TEAMFULL );
+      trap_SendServerCommand( ent-g_entities, va("print \"team: The alien team has too many players.\n\"" ) );
+      //G_TriggerMenu( ent - g_entities, MN_A_TEAMFULL );
       return;
     }
 
@@ -719,10 +720,11 @@
 
     if( !force && g_teamForceBalance.integer &&
       ( ( level.numHumanClients > level.numAlienClients ) ||
-        ( ent->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS &&
+        ( ent->client->pers.teamSelection == PTE_ALIENS &&
           level.numHumanClients >= level.numAlienClients ) ) )
     {
-      G_TriggerMenu( ent - g_entities, MN_H_TEAMFULL );
+      trap_SendServerCommand( ent-g_entities, va("print \"team: The human team has too many players.\n\"" ) );
+      //G_TriggerMenu( ent - g_entities, MN_H_TEAMFULL );
       return;
     }
 
@@ -732,9 +734,13 @@
   {
     if( level.humanTeamLocked && level.alienTeamLocked )
       team = PTE_NONE;
-    else if( level.numHumanClients > level.numAlienClients )
+    else if( ( level.numHumanClients > level.numAlienClients ) ||
+        ( ent->client->pers.teamSelection == PTE_ALIENS &&
+          level.numHumanClients >= level.numAlienClients ) )
       team = PTE_ALIENS;
-    else if( level.numHumanClients < level.numAlienClients )
+    else if( ( level.numHumanClients < level.numAlienClients ) ||
+        ( ent->client->pers.teamSelection == PTE_HUMANS &&
+          level.numHumanClients <= level.numAlienClients ) )
       team = PTE_HUMANS;
     else
       team = PTE_ALIENS + ( rand( ) % 2 );
