anchor.diff:  							{Units, 0}, {Units, 0}, State)
   			end
   	end;
  -charge2(Service, #product{id = ProductId} = Product, Buckets,
  +charge2(#service{name = ServiceId} = Service, #product{id = ProductId} = Product, Buckets,
   		#price{units = Units, size = UnitSize, amount = UnitPrice},
   		interim, {Units, Damount} = DebitAmount, {Units, Ramount} = ReserveAmount,
  -		#state{session_id = SessionId, service_id = ServiceId,
  +		#state{session_id = SessionId,
   		charging_key = ChargingKey} = State) ->
   	case update_session(Units, Damount, Ramount,
   			ServiceId, ChargingKey, SessionId, Buckets) of
  
positive.code: 			end
  	end.
  %% @hidden
  charge3(#service{session_attributes = SessionList} = Service1, Product, Buckets, final,
  		{Units, Charge}, {Units, Charged}, {Units, 0}, {Units, 0},
  		#state{rated = Rated, session_id = SessionId,
  		service_id = ServiceId, charging_key = ChargingKey,
  		buckets = OldBuckets}) when Charged >= Charge ->
  	{Debits, NewBuckets} = get_final(ServiceId,
  			ChargingKey, SessionId, Buckets),
  
negative.code: 							ReserveAmount, ReserveAmount, State#state{rated = Rated3})
  			end
  	end;
  charge2(#service{name = ServiceId} = Service, #product{id = ProductId} = Product, Buckets1,
  		#price{units = Units, size = UnitSize, amount = UnitPrice,
  		type = PriceType, currency = Currency}, event,
  		{Units, Amount} = DebitAmount, {Units, 0} = ReserveAmount,
  		#state{rated = Rated1, session_id = SessionId,
  		charging_key = ChargingKey} = State) ->
  	Rated2 = Rated1#rated{price_type = PriceType, currency = Currency},
  	case charge_event(Units, Amount, Buckets1) of
  		{Amount, Buckets2} ->
  