To prevent only shadow lamps from producing negative colors, shr->diff and shr->spec should've been clamped to positive values after lamp loop.
To prevent only shadow lamps from producing negative colors, shr->diff and shr->spec should've been clamped to positive values after lamp loop.