anchor.diff:  	var/state_change = 0
   	if(on)
   		if(beaker)
  -			if(beaker.reagents.chem_temp != desired_temp)
  -				beaker.reagents.chem_temp += ((desired_temp - beaker.reagents.chem_temp) * heater_coefficient)
  -
  -				beaker.reagents.chem_temp = round(beaker.reagents.chem_temp) //stops stuff like 456.12312312302
  -				if(beaker.reagents.chem_temp == ((desired_temp-3) || (desired_temp+3)))//need better way to stop superdecimals and rounding drops
  -					beaker.reagents.chem_temp = desired_temp
  -				beaker.reagents.handle_reactions()
  -				state_change = 1
  +			if(beaker.reagents.chem_temp > desired_temp)
  +				beaker.reagents.chem_temp += min(-1, (desired_temp - beaker.reagents.chem_temp) * heater_coefficient)
  +			if(beaker.reagents.chem_temp < desired_temp)
  +				beaker.reagents.chem_temp += max(1, (desired_temp - beaker.reagents.chem_temp) * heater_coefficient)
  +			beaker.reagents.chem_temp = round(beaker.reagents.chem_temp) //stops stuff like 456.12312312302
  +
  +			beaker.reagents.handle_reactions()
  +			state_change = 1
   
   	if(state_change)
   		SSnano.update_uis(src)
  
positive.code: 	RefreshParts()
  
  /obj/machinery/chem_heater/RefreshParts()
  	heater_coefficient = 0.15
  	for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts)
  		heater_coefficient *= M.rating
  
  
negative.code: 	idle_power_usage = 40
  	var/obj/item/weapon/reagent_containers/beaker = null
  	var/desired_temp = 300
  	var/heater_coefficient = 0.10
  	var/on = FALSE
  
  /obj/machinery/chem_heater/New()
  