anchor.diff:  	gcedlasttick = 0
   	var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del()
   	var/list/queue = src.queue
  -	while(queue.len && world.timeofday < time_to_stop)
  +	var/starttime = world.time
  +	var/starttimeofday = world.timeofday
  +	while(queue.len && starttime == world.time && starttimeofday == world.timeofday)
   		if (MC_TICK_CHECK)
   			break
   		var/refID = queue[1]
  
positive.code: 	..(msg)
  
  /datum/subsystem/garbage_collector/fire()
  	var/time_to_stop = world.timeofday + max_run_time
  	HandleToBeQueued(time_to_stop)
  	HandleQueue(time_to_stop)
  
  //If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond.
  //Don't attempt to optimize, not worth the effort.
  /datum/subsystem/garbage_collector/proc/HandleToBeQueued(time_to_stop)
  	var/list/tobequeued = src.tobequeued
  	while(tobequeued.len && world.timeofday < time_to_stop)
  		if (MC_TICK_CHECK)
  			break
  		var/ref = tobequeued[1]
  
negative.code: 	can_fire = 1 // This needs to fire before round start.
  
  	var/collection_timeout = 300// deciseconds to wait to let running procs finish before we just say fuck it and force del() the object
  	var/delslasttick = 0		// number of del()'s we've done this tick
  	var/gcedlasttick = 0		// number of things that gc'ed last tick
  	var/totaldels = 0
  	var/totalgcs = 0
  	
  	var/highest_del_time = 0
  	var/highest_del_tickusage = 0
  
  	var/list/queue = list() 	// list of refID's of things that should be garbage collected
  								// refID's are associated with the time at which they time out and need to be manually del()
  