anchor.diff:  			accumulated_balance(NewBuckets, Product#product.id)};
   charge3(#service{session_attributes = SessionList} = Service1, Product, Buckets, initial,
   		{Units, 0}, {Units, 0}, {Units, _Reserve}, {Units, Reserved},
  -		#state{session_id = SessionId}, OldBuckets) ->
  +		#state{session_id = SessionId}, _ChargingKey, OldBuckets) ->
   	{NewBRefs, DeletedBuckets}
   			= update_buckets(Product#product.balance, OldBuckets, Buckets),
   	ok = mnesia:write(Product#product{balance = NewBRefs}),
  
positive.code: 			throw(undefined_tariff)
  	end;
  rate3(Protocol, Service, Product, Buckets, _Address,
  		Price, Flag, DebitAmounts, ReserveAmounts, State) ->
  	charge(Protocol, Product, Service, Buckets, Price,
  			Flag, DebitAmounts, ReserveAmounts, State).
  %% @hidden
  rate4(Protocol, Service, Product, Buckets,
  		#price{type = tariff} = Price, Flag, DebitAmounts, ReserveAmounts,
  		#state{roaming_tb_prefix = RoamingTable, service_network = ServiceNetwork,
  		rated = Rated} = State)
  		when is_list(RoamingTable), is_list(ServiceNetwork) ->
  	Table = list_to_existing_atom(RoamingTable),
  	case catch ocs_gtt:lookup_last(Table, ServiceNetwork) of
  
negative.code: 									units = Units, product = [ProductId]} | Buckets4],
  							charge3(Service, Product, Buckets5, interim, DebitAmount,
  									{Units, UnitsCharged + NewUnitsCharged},
  									ReserveAmount, {Units, 0}, State, ChargingKey, Buckets)
  					end;
  				false ->
  					Now = erlang:system_time(millisecond),
  