anchor.diff:  
   		// now trickle-charge the cell
   
  -		if(chargemode && charging == 1 && operating)
  +		if(src.attempt_charging())
   			if(excess > 0)		// check to make sure we have enough to charge
   				// Max charge is capped to % per second constant
   				var/ch = min(excess*CELLRATE, cell.maxcharge*CHARGELEVEL)
  -				add_load(ch/CELLRATE) // Removes the power we're taking from the grid
  -				cell.give(ch) // actually recharge the cell
  +
  +				ch = draw_power(ch/CELLRATE) // Removes the power we're taking from the grid
  +				cell.give(ch*CELLRATE) // actually recharge the cell
   
   			else
   				charging = 0		// stop charging
   				chargecount = 0
   
   		// show cell as fully charged if so
  -
   		if(cell.charge >= cell.maxcharge)
   			cell.charge = cell.maxcharge
   			charging = 2
   
   		if(chargemode)
   			if(!charging)
  -				if(excess > cell_maxcharge*CHARGELEVEL)
  +				if(excess > cell.maxcharge*CHARGELEVEL)
   					chargecount++
   				else
   					chargecount = 0
  -					charging = 0
  -
  -				if(chargecount == 10)
  +
  +				if(chargecount >= 10)
   
   					chargecount = 0
   					charging = 1
  
positive.code: 	if (istype(H))
  		if(H.getBrainLoss() >= 60)
  			for(var/mob/M in viewers(src, null))
  				M << "\red [H] stares cluelessly at [src] and drools."
  			return 0
  		else if(prob(H.getBrainLoss()))
  			user << "\red You momentarily forget how to use [src]."
  			return 0
  	return 1
  
  
negative.code: 		user << "You begin to replace the damaged APC frame..."
  		if(do_after(user, 50))
  			user.visible_message(\
  				"<span class='notice'>[user.name] has replaced the damaged APC frame with new one.</span>",\
  				"You replace the damaged APC frame with new one.")
  			qdel(W)
  			stat &= ~BROKEN
  