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:31:57.000000000 +0100
+++ tremulous.temp/src/game/g_cmds.c	2007-02-28 18:31:59.000000000 +0100
@@ -1049,7 +1049,7 @@
     return;
   }
 
-  if( ent->client->pers.teamSelection == PTE_NONE )
+  if( ent->client->pers.teamSelection == PTE_NONE && !g_allowSpecVoting.integer )
   {
     trap_SendServerCommand( ent-g_entities, "print \"Not allowed to call a vote as spectator\n\"" );
     return;
@@ -1218,7 +1218,7 @@
     return;
   }
 
-  if( ent->client->pers.teamSelection == PTE_NONE )
+  if( ent->client->pers.teamSelection == PTE_NONE && !g_allowSpecVoting.integer )
   {
     trap_SendServerCommand( ent-g_entities, "print \"Not allowed to vote as spectator\n\"" );
     return;
diff -Nru tremulous/src/game/g_local.h tremulous.temp/src/game/g_local.h
--- tremulous/src/game/g_local.h	2007-02-28 18:31:57.000000000 +0100
+++ tremulous.temp/src/game/g_local.h	2007-02-28 18:31:59.000000000 +0100
@@ -1110,6 +1110,7 @@
 extern  vmCvar_t  g_doWarmup;
 extern  vmCvar_t  g_blood;
 extern  vmCvar_t  g_allowVote;
+extern  vmCvar_t  g_allowSpecVoting;
 extern  vmCvar_t  g_voteLimit;
 extern  vmCvar_t  g_teamAutoJoin;
 extern  vmCvar_t  g_teamForceBalance;
diff -Nru tremulous/src/game/g_main.c tremulous.temp/src/game/g_main.c
--- tremulous/src/game/g_main.c	2007-02-28 18:31:57.000000000 +0100
+++ tremulous.temp/src/game/g_main.c	2007-02-28 18:31:59.000000000 +0100
@@ -75,6 +75,7 @@
 vmCvar_t  g_podiumDist;
 vmCvar_t  g_podiumDrop;
 vmCvar_t  g_allowVote;
+vmCvar_t  g_allowSpecVoting;
 vmCvar_t  g_voteLimit;
 vmCvar_t  g_teamAutoJoin;
 vmCvar_t  g_teamForceBalance;
@@ -199,6 +200,7 @@
   { &g_podiumDrop, "g_podiumDrop", "70", 0, 0, qfalse },
 
   { &g_allowVote, "g_allowVote", "1", CVAR_ARCHIVE, 0, qfalse },
+  { &g_allowSpecVoting, "g_allowSpecVoting", "1", CVAR_ARCHIVE, 0, qfalse },
   { &g_voteLimit, "g_voteLimit", "5", CVAR_ARCHIVE, 0, qfalse },
   { &g_listEntity, "g_listEntity", "0", 0, 0, qfalse },
   { &g_minCommandPeriod, "g_minCommandPeriod", "500", 0, 0, qfalse},
