anchor.diff:  	var/list/currentrun = src.currentrun
   
   	while(length(currentrun))
  -		var/client/C = currentrun[currentrun.len]
  +		var/client/processing_client = currentrun[currentrun.len]
   		currentrun.len--
  -		if (!C || !C.eye)
  +		if (QDELETED(processing_client) || !processing_client.eye)
   			if (MC_TICK_CHECK)
   				return
   			continue
  -		var/atom/movable/A = C.eye
  -		if(!istype(A))
  +
  +		var/atom/movable/movable_eye = processing_client.eye
  +		if(!istype(movable_eye))
   			continue
  -		for (A; isloc(A.loc) && !isturf(A.loc); A = A.loc);
   
  -		if(A != C.movingmob)
  -			if(C.movingmob != null)
  -				C.movingmob.client_mobs_in_contents -= C.mob
  -				UNSETEMPTY(C.movingmob.client_mobs_in_contents)
  -			LAZYINITLIST(A.client_mobs_in_contents)
  -			A.client_mobs_in_contents += C.mob
  -			C.movingmob = A
  +		for (movable_eye; isloc(movable_eye.loc) && !isturf(movable_eye.loc); movable_eye = movable_eye.loc);
  +
  +		if(movable_eye == processing_client.movingmob)
  +			if (MC_TICK_CHECK)
  +				return
  +			continue
  +		if(!isnull(processing_client.movingmob))
  +			LAZYREMOVE(processing_client.movingmob.client_mobs_in_contents, processing_client.mob)
  +		LAZYADD(movable_eye.client_mobs_in_contents, processing_client.mob)
  +		processing_client.movingmob = movable_eye
   		if (MC_TICK_CHECK)
   			return
   	currentrun = null
  
positive.code: 	var/random_layer
  	var/random_parallax_color
  
  //These are cached per client so needs to be done asap so people joining at roundstart do not miss these.
  /datum/controller/subsystem/parallax/PreInit()
  	. = ..()
  
negative.code: 	planet_y_offset = rand(100, 160)
  	planet_x_offset = rand(100, 160)
  
  
  /datum/controller/subsystem/parallax/fire(resumed = FALSE)
  	if (!resumed)
  		src.currentrun = GLOB.clients.Copy()
  
  