anchor.diff:  */
   /datum/controller/game_controller/proc/calculateGCD()
   	var/GCD
  +	//shortest fire rate is the lower of two ticks or 1ds
  +	var/minimumInterval = min(world.tick_lag*2,1)
   	for(var/datum/subsystem/SS in subsystems)
   		if(SS.wait)
   			GCD = Gcd(round(SS.wait*10), GCD)
   	GCD = round(GCD)
  -	if(GCD < world.tick_lag*10)
  -		GCD = world.tick_lag*10
  +	if(GCD < minimumInterval*10)
  +		GCD = minimumInterval*10
   	processing_interval = GCD/10
   
   /datum/controller/game_controller/proc/setup(zlevel)
  
positive.code: 	if(master_controller != src)
  		if(istype(master_controller))
  			Recover()
  			master_controller.Del()
  		else
  			init_subtypes(/datum/subsystem, subsystems)
  
  		master_controller = src
  	calculateGCD()
  
  
  /*
  
negative.code: 		while(1)	//far more efficient than recursively calling ourself
  			if(processing_interval > 0)
  				++iteration
  				var/startingtick = world.time
  				start_time = world.timeofday
  				var/SubSystemRan = 0
  				for(var/datum/subsystem/SS in subsystems)
  					if(SS.can_fire > 0)
  						if(SS.next_fire <= world.time && SS.last_fire+(SS.wait*0.5) <= world.time)
  							SubSystemRan = 1
  							timer = world.timeofday
  							last_thing_processed = SS.type
  