Is now fixed
Couldn't explain precisely how/why, but I think the following code could

PHP Code:
endRound(roundwinnercamoffset)
{

...

    else if(
roundwinner == "axis")
    {
        
doRoundcam true;

        
game["axisscore"]++;
        
setTeamScore("axis"game["axisscore"]);

        
players getentarray("player""classname");
        for(
0players.sizei++)
        {
            
lpGuid players[igetGuid();
            if((
isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "axis"))
                
winners = (winners ";" lpGuid ";" players[i].name);
            else if((
isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "allies"))
                
losers = (losers ";" lpGuid ";" players[i].name);
        }
        
logPrint("W;axis" winners "\n");
        
logPrint("L;allies" losers "\n");
    }

    if (
doRoundcam)
    {
        
printf("######### sd: endRound: doRoundcam \n");
        
level roundCam(camroundwinneroffset);
    }
    else
    {
        
wait 7;
    }

...
    
    
level notify("restarting");
    
map_restart(true);
}

roundCam(camroundwinneroffset)
{
    if (!
isdefined(cam) || !isdefined(roundwinner) || !isdefined(offset))
    {
        
wait(3);
        return;
    }

    
delay 2;
    
wait(delay);

...

    
viewers 0;
    
players getentarray("player""classname");

    for (
0players.sizei++)
    {
        
player players[i];
        if (
isdefined(player.killcam) || (player.archivetime 0))
        {
            
// Already running killcam, stop it
            
player notify("spawned");
            
wait(0.05);
            
player.spectatorclient = -1;
            
player.archivetime 0;
        }
        
player thread maps\mp\gametypes\_killcam::roundcam(camdelaytextoffset);
        
viewers++;
    }

    if (
viewers)
    {
        
level waittill("roundcam_ended");
    }
    else
    {
        
wait(delay);
    }