diff --git a/src/p_spec.c b/src/p_spec.c
index 48079b9e57c67c801fab7bbe08f192396fa75563..f712f4b2389c3f12eb968f734d213c24c71c048d 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -3917,20 +3917,15 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 				}
 			}
 		case 460: // Award rings
-		{
-			INT16 rings = (sides[line->sidenum[0]].textureoffset>>FRACBITS);
-			INT16 delay = (sides[line->sidenum[0]].rowoffset>>FRACBITS);
-			if (mo && mo->player)
 			{
-				if (delay > 0)
+				INT16 rings = (sides[line->sidenum[0]].textureoffset>>FRACBITS);
+				tic_t delay = (sides[line->sidenum[0]].rowoffset>>FRACBITS);
+				if (mo && mo->player)
 				{
-					if (!(leveltime % (delay*TICRATE)))
+					if (delay <= 0 || !(leveltime % (delay)))
 						P_GivePlayerRings(mo->player, rings);
 				}
-				else
-					P_GivePlayerRings(mo->player, rings);
 			}
-		}
 			break;
 
 #ifdef POLYOBJECTS