diff --git a/src/k_kart.c b/src/k_kart.c
index 2a152162abf0116757c17868f0ce6cfc0d4fe74c..28a566c99c240d46bc752d909307aac14d3410f7 100644
--- a/src/k_kart.c
+++ b/src/k_kart.c
@@ -4786,22 +4786,22 @@ void K_KartUpdatePosition(player_t *player)
 															mo->y - players[i].mo->y),
 															mo->z - players[i].mo->z) / FRACUNIT;
 
-					if (mo->health == player->starpostnum)
+					if (mo->health == player->starpostnum && (!mo->movecount || mo->movecount == player->laps+1))
 					{
 						player->kartstuff[k_prevcheck] += pmo;
 						ppcd++;
 					}
-					if (mo->health == (player->starpostnum + 1))
+					if (mo->health == (player->starpostnum + 1) && (!mo->movecount || mo->movecount == player->laps+1))
 					{
 						player->kartstuff[k_nextcheck] += pmo;
 						pncd++;
 					}
-					if (mo->health == players[i].starpostnum)
+					if (mo->health == players[i].starpostnum && (!mo->movecount || mo->movecount == players[i].laps+1))
 					{
 						players[i].kartstuff[k_prevcheck] += imo;
 						ipcd++;
 					}
-					if (mo->health == (players[i].starpostnum + 1))
+					if (mo->health == (players[i].starpostnum + 1) && (!mo->movecount || mo->movecount == players[i].laps+1))
 					{
 						players[i].kartstuff[k_nextcheck] += imo;
 						incd++;
diff --git a/src/p_mobj.c b/src/p_mobj.c
index e393c11e137b71203c5e9865f82347b24b60f55c..b7c6eda0437b798df15c5036f60d3d1c2889aa3c 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -11896,6 +11896,7 @@ ML_NOCLIMB : Direction not controllable
 	else if (i == MT_BOSS3WAYPOINT) // SRB2kart 120217 - Used to store checkpoint num
 	{
 		mobj->health = mthing->angle;
+		mobj->movecount = mthing->extrainfo;
 		P_SetTarget(&mobj->tracer, waypointcap);
 		P_SetTarget(&waypointcap, mobj);
 	}