anchor.diff:  							units = Units, product = [ProductId]} | Buckets2],
   					charge3(Service, Product, Buckets4, interim,
   							DebitAmount, {Units, UnitsCharged},
  -							{Units, 0}, {Units, 0}, State, ChargingKey, Buckets)
  +							{Units, 0}, {Units, 0}, State, Rated, ChargingKey, Buckets)
   			end
   	end;
   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} = State, ChargingKey) ->
  +		#state{session_id = SessionId} = State, Rated, ChargingKey) ->
   	case update_session(Units, Damount, Ramount,
   			ServiceId, ChargingKey, SessionId, Buckets) of
   		{Damount, UnitsReserved, Buckets2} when UnitsReserved >= Ramount ->
   			charge3(Service, Product, Buckets2, interim, DebitAmount, DebitAmount,
  -					ReserveAmount, {Units, UnitsReserved}, State, ChargingKey, Buckets);
  +					ReserveAmount, {Units, UnitsReserved}, State, Rated, ChargingKey, Buckets);
   		{Damount, UnitsReserved, Buckets2} when UnitsReserved < Ramount ->
   			NewReserveUnits = Ramount - UnitsReserved,
   			{UnitReserve, PriceReserve} = price_units(NewReserveUnits,
  
positive.code: 						{NewChargeUnits, 0, Buckets4} ->
  							charge3(Service, Product, Buckets4, interim,
  									DebitAmount, {Units, UnitsCharged},
  									{Units, 0}, {Units, 0}, State, ChargingKey, Buckets);
  						{NewUnitsCharged, 0, Buckets4}
  								when NewUnitsCharged < NewChargeUnits->
  							Now = erlang:system_time(millisecond),
  
negative.code: 		false ->
  			{Units, 0}
  	end,
  	charge2(Service, Product, Buckets, Price, Flag, DebitAmount, ReserveAmount,
  			State, Rated, ChargingKey).
  %% @hidden
  charge2(#service{name = ServiceId} = Service, Product, Buckets,
  		#price{units = Units, size = UnitSize, amount = UnitPrice},
  		initial, {_, 0}, {Units, Amount} = ReserveAmount,
  		#state{session_id = SessionId} = State, Rated, ChargingKey) ->
  	case update_session(Units, 0, Amount,
  			ServiceId, ChargingKey, SessionId, Buckets) of
  		{0, UnitsReserved, Buckets2} when UnitsReserved >= Amount ->
  			charge3(Service, Product, Buckets2, initial,
  					{Units, 0}, {Units, 0}, ReserveAmount,
  					{Units, UnitsReserved}, State, Rated, ChargingKey, Buckets);
  		{0, UnitsReserved, Buckets2} when UnitsReserved < Amount ->
  			PriceReserveUnits = (Amount - UnitsReserved),
  			{UnitReserve, PriceReserve} = price_units(PriceReserveUnits,
  