anchor.diff:  			return
   
   		usr.set_machine(src)
  -		if(!href_list["fc"])
  +		if(href_list["timing"]) //switch between timing and not timing
   			var/timeleft = timeleft()
  +			timeleft = min(max(round(timeleft), 0), 600)
  +			timing = text2num(href_list["timing"])
  +			timeset(timeleft)
  +		else
   			if(href_list["tp"]) //adjust timer
  +				var/timeleft = timeleft()
   				var/tp = text2num(href_list["tp"])
   				timeleft += tp
  -			timeleft = min(max(round(timeleft), 0), 600)
  -			if(href_list["timing"]) //switch between timing and not timing
  -				src.timing = text2num(href_list["timing"])
  -			timeset(timeleft)
  -		else
  -			for(var/obj/machinery/flasher/F in targets)
  -				F.flash()
  +				timeleft = min(max(round(timeleft), 0), 600)
  +				timeset(timeleft)
  +			else
  +				for(var/obj/machinery/flasher/F in targets)
  +					F.flash()
   		src.add_fingerprint(usr)
   		src.updateUsrDialog()
   		src.update_icon()
  -		if(src.timing)
  +		if(timing)
   			src.timer_start()
   		else
   			src.timer_end()
  
positive.code: // update the door_timer window and the icon
  	process()
  		if(stat & (NOPOWER|BROKEN))	return
  		if(src.timing)
  			if(world.time > src.releasetime)
  				src.timer_end() // open doors, reset timer, clear status screen
  				src.timing = 0
  				timeset(0)
  			src.updateUsrDialog()
  			src.update_icon()
  
negative.code: 
  
  	proc/timeleft()
  		. = (timing ? (releasetime-world.time) : timelength)/10
  		if(. < 0)
  			. = 0
  
  
  	proc/timeset(var/seconds)
  		if(timing)
  			releasetime=world.time+seconds*10
  		else
  			timelength=seconds*10
  