diff --git a/src/p_user.c b/src/p_user.c
index 35399c2b8860aa52aea0882af05ffcd6dcc34c67..b93cf5b44137796fa8c57a08468775da26d48ed1 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -11576,9 +11576,21 @@ void P_PlayerAfterThink(player_t *player)
 #endif
 
 	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))
+		{
+			P_ResetCamera(player, thiscam);
+		}
+	}
 	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))
+		{
+			P_ResetCamera(player, thiscam);
+		}
+	}
 
 	if (player->playerstate == PST_DEAD)
 	{