diff --git a/src/p_spec.c b/src/p_spec.c
index f1a697399c547d13094411aa9956a81d556e7439..1121e234844bebd106967dea0a562a08fc545591 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -4072,8 +4072,8 @@ void P_SetupSignExit(player_t *player)
 		if (thing->type != MT_SIGN)
 			continue;
 
-		if (!player->mo->target || player->mo->target->type != MT_SIGN)
-			P_SetTarget(&player->mo->target, thing);
+		if (!endsign || P_MobjWasRemoved(endsign))
+			endsign = thing;
 
 		if (thing->state != &states[thing->info->spawnstate])
 			continue;
@@ -4101,8 +4101,8 @@ void P_SetupSignExit(player_t *player)
 		if (thing->type != MT_SIGN)
 			continue;
 
-		if (!player->mo->target || player->mo->target->type != MT_SIGN)
-			P_SetTarget(&player->mo->target, thing);
+		if (!endsign || P_MobjWasRemoved(endsign))
+			endsign = thing;
 
 		if (thing->state != &states[thing->info->spawnstate])
 			continue;
diff --git a/src/p_spec.h b/src/p_spec.h
index d7176afee73e7b4bb3a8356744c6633f60070cdc..e2abcebb87704e56e81bdfed3f89bd3aa5ac4fab 100644
--- a/src/p_spec.h
+++ b/src/p_spec.h
@@ -21,6 +21,8 @@ extern mobj_t *skyboxmo[2]; // current skybox mobjs: 0 = viewpoint, 1 = centerpo
 extern mobj_t *skyboxviewpnts[16]; // array of MT_SKYBOX viewpoint mobjs
 extern mobj_t *skyboxcenterpnts[16]; // array of MT_SKYBOX centerpoint mobjs
 
+mobj_t *endsign;
+
 // GETSECSPECIAL (specialval, section)
 //
 // Pulls out the special # from a particular section.
diff --git a/src/p_user.c b/src/p_user.c
index 47812744e8cf4dde8cef21cbbe7b16aba6bc6645..79b6d7e75367b2b82422edf69bda2705558014ab 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -9629,10 +9629,10 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 
 	mo = player->mo;
 
-	if (player->exiting && mo->target && mo->target->type == MT_SIGN)
-		sign = mo->target;
+	if (player->exiting && endsign && !P_MobjWasRemoved(endsign))
+		sign = endsign;
 
-	cameranoclip = (player->powers[pw_carry] == CR_NIGHTSMODE || player->pflags & PF_NOCLIP) || (mo->flags & (MF_NOCLIP|MF_NOCLIPHEIGHT)); // Noclipping player camera noclips too!!
+	cameranoclip = (sign || player->powers[pw_carry] == CR_NIGHTSMODE || player->pflags & PF_NOCLIP) || (mo->flags & (MF_NOCLIP|MF_NOCLIPHEIGHT)); // Noclipping player camera noclips too!!
 
 	if (!(player->climbing || (player->powers[pw_carry] == CR_NIGHTSMODE) || player->playerstate == PST_DEAD || tutorialmode))
 	{