diff --git a/src/p_user.c b/src/p_user.c
index b93cf5b44137796fa8c57a08468775da26d48ed1..2903e546f3875a5001efb4bd490ec55ea0487409 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -11578,7 +11578,7 @@ void P_PlayerAfterThink(player_t *player)
 	if (splitscreen && player == &players[secondarydisplayplayer])
 	{
 		thiscam = &camera2;
-		if (P_AproxDistance(player->mo->x-thiscam->x-thiscam->momx, player->mo->y-thiscam->y-thiscam->momy) > ((player->speed+cv_cam2_dist.value)*2))
+		if ((P_AproxDistance(player->mo->x-thiscam->x-thiscam->momx, player->mo->y-thiscam->y-thiscam->momy) > ((player->speed+cv_cam2_dist.value)*2)) || (abs(thiscam->z - player->mo->z) > ((player->speed+cv_cam2_dist.value)*2)))
 		{
 			P_ResetCamera(player, thiscam);
 		}
@@ -11586,7 +11586,7 @@ void P_PlayerAfterThink(player_t *player)
 	else if (player == &players[displayplayer])
 	{
 		thiscam = &camera;
-		if (P_AproxDistance(player->mo->x-thiscam->x-thiscam->momx, player->mo->y-thiscam->y-thiscam->momy) > ((player->speed+cv_cam_dist.value)*2))
+		if ((P_AproxDistance(player->mo->x-thiscam->x-thiscam->momx, player->mo->y-thiscam->y-thiscam->momy) > ((player->speed+cv_cam_dist.value)*2)) || (abs(thiscam->z - player->mo->z) > ((player->speed+cv_cam_dist.value)*2)))
 		{
 			P_ResetCamera(player, thiscam);
 		}