anchor.diff:  				return
   			var/recipe_to_use = params["recipe"]
   			var/list/chemicals_to_dispense = process_recipe_list(recipe_to_use)
  -			var/res = get_macro_resolution()
  +			var/res = macroresolution
   			for(var/key in chemicals_to_dispense) // i suppose you could edit the list locally before passing it
   				var/list/keysplit = splittext(key," ")
   				var/r_id = keysplit[1]
   				if(beaker && dispensable_reagents.Find(r_id)) // but since we verify we have the reagent, it'll be fine
   					var/datum/reagents/R = beaker.reagents
   					var/free = R.maximum_volume - R.total_volume
  -					var/actual = min(round(chemicals_to_dispense[key], res), (cell.charge * powerefficiency)*10, free)
  +					var/actual = min(max(chemicals_to_dispense[key], res), (cell.charge * powerefficiency)*10, free)
   					if(actual)
   						if(!cell.use(actual / powerefficiency))
   							say("Not enough energy to complete operation!")
  
positive.code: 	var/working_state = "dispenser_working"
  	var/nopower_state = "dispenser_nopower"
  	var/has_panel_overlay = TRUE
  	var/macrotier = 1
  	var/obj/item/reagent_containers/beaker = null
  	var/list/dispensable_reagents = list(
  		"hydrogen",
  
negative.code: 	if(panel_open)
  		to_chat(user, "<span class='notice'>[src]'s maintenance hatch is open!</span>")
  	if(in_range(user, src) || isobserver(user))
  		to_chat(user, "<span class='notice'>The status display reads: <br>Recharging <b>[recharge_amount]</b> power units per interval.<br>Power efficiency increased by <b>[round((powerefficiency*1000)-100, 1)]%</b>.<br>Macro granularity at <b>[macroresolution]u</b>.<span>")
  
  /obj/machinery/chem_dispenser/process()
  	if (recharge_counter >= 4)
  		if(!is_operational())
  