anchor.diff:  					reservations = [NewReservation | NewReservations]} | Acc],
   			update_session(Type, 0, Reserve - Remain, Now, SessionId,
   					T, NewAcc, Charged + Charge, Reserved + Remain);
  -% charge and partial reserve
   		{value, {_, DebitedAmount, ReservedAmount, _}, NewReservations}
   				when Charge > ReservedAmount, Remain >= (Charge - ReservedAmount),
   				Reserve > (Remain + (Charge - ReservedAmount)) ->
  -erlang:display({?MODULE, ?LINE, Type, Charge, Reserve, DebitedAmount, ReservedAmount}),
   			NewDebitedAmount = DebitedAmount + Charge,
   			NewReserve = Remain - (Charge - ReservedAmount),
   			NewReservation = {Now, NewDebitedAmount, NewReserve, SessionId},
  
positive.code: 			{UnitReserve, _} = price_units(Ramount, UnitSize, UnitPrice),
  			case convert(PriceReserve, Units, ConvertReserve, SessionId, Buckets2) of
  				{ok, Buckets3} ->
  erlang:display({?MODULE, ?LINE, Buckets3}),
  					case update_session(Units, NewChargeUnits, UnitReserve,
  							SessionId, Buckets3) of
  						{NewChargeUnits, UnitsReserved, Buckets4}
  								when UnitsReserved >= UnitReserve ->
  erlang:display({?MODULE, ?LINE, NewChargeUnits, UnitsReserved, Buckets4}),
  							rate7(Service, Buckets4, interim, DebitAmount,
  									{Units, UnitsCharged + NewChargeUnits},
  									ReserveAmount, {Units, UnitsReserved}, State);
  
negative.code: 		{{_, _, _}, {_, _, _}} = Timestamp, Address, Direction, Flag,
  		DebitAmounts, ReserveAmounts, SessionAttributes)
  		when ((Protocol == radius) or (Protocol == diameter)),
  		(is_integer(ChargingKey) or (ChargingKey == undefined)),
  		(is_list(ServiceNetwork) or (ServiceNetwork == undefined)),
  		is_binary(SubscriberID),
  		(is_list(Address) or (Address == undefined)),
  