diff --git a/src/p_spec.c b/src/p_spec.c
index f712f4b2389c3f12eb968f734d213c24c71c048d..f6c0be083595eca620f9943f3dab0f76158434db 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -3916,13 +3916,15 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 					F_StartTextPrompt(promptnum, pagenum, mo, runpostexec ? postexectag : 0, blockcontrols, freezerealtime);
 				}
 			}
+			break;
+
 		case 460: // Award rings
 			{
 				INT16 rings = (sides[line->sidenum[0]].textureoffset>>FRACBITS);
-				tic_t delay = (sides[line->sidenum[0]].rowoffset>>FRACBITS);
+				INT32 delay = (sides[line->sidenum[0]].rowoffset>>FRACBITS);
 				if (mo && mo->player)
 				{
-					if (delay <= 0 || !(leveltime % (delay)))
+					if (delay <= 0 || !(leveltime % delay))
 						P_GivePlayerRings(mo->player, rings);
 				}
 			}