anchor.diff:  					charging_key => ChargingKey}} | Reservations2],
   			{0, B1#bucket{remain_amount = R - Price1,
   					last_modified = {Now, erlang:unique_integer([positive])},
  -					attributes = Attributes#{reservations => maps:from_list(NewReservations)}}};
  +					attributes = Attributes#{reservations => maps:from_list(NewReservations)}}, FromBucket};
   		{[{_, #{debit := DebitedAmount, reserve := ReservedAmount}}], Reservations2}
   				when R < Price1 ->
   			NewReservations = [{SessionId, #{ts => Now, debit => DebitedAmount + R,
  
positive.code: 					charging_key => ChargingKey}} | Reservations2],
  			{Price1 - R, B1#bucket{remain_amount = 0,
  					last_modified = {Now, erlang:unique_integer([positive])},
  					attributes = Attributes#{reservations => maps:from_list(NewReservations)}}};
  		{[], _} when R >= Price1 ->
  			NewReservations = Reservations1#{SessionId => #{ts => Now,
  					debit => Price1, reserve => 0, service_id => ServiceId,
  					charging_key => ChargingKey}},
  			{0, B1#bucket{remain_amount = R - Price1,
  					last_modified = {Now, erlang:unique_integer([positive])},
  					attributes = Attributes#{reservations => NewReservations}}};
  		{[], _} when R < Price1 ->
  			NewReservations = Reservations1#{SessionId => #{ts => Now, debit => R,
  					reserve => 0, service_id => ServiceId,
  					charging_key => ChargingKey}},
  			{Price1 - R, B1#bucket{remain_amount = 0,
  					last_modified = {Now, erlang:unique_integer([positive])},
  					attributes = Attributes#{reservations => NewReservations}}}
  	end,
  	convert(Price2, Type, Size, ServiceId, ChargingKey, SessionId,
  			Now, T, UnitsBuckets, [B2 | Acc]);
  convert(Price, Type, Size, ServiceId, ChargingKey, SessionId,
  		Now, [H | T], UnitsBuckets, Acc) ->
  	convert(Price, Type, Size, ServiceId, ChargingKey, SessionId,
  			Now, T, UnitsBuckets, [H | Acc]);
  convert(Price, _, _, _, _, _, _, [], _, _) when Price > 0 ->
  	false.
  %% @hidden
  convert1(Type, Size, ServiceId, ChargingKey, SessionId, Now, CentsBuckets,
  		[#bucket{units = Type, remain_amount = R,
  		attributes = #{bucket_type := session,
  				reservations := Reservations}} = B | T], Acc) ->
  	F = fun({SessionId1, #{service_id := ServiceId1,
  
negative.code: 			NewReserveUnits = Ramount - UnitsReserved,
  			{UnitReserve, PriceReserve} = price_units(NewReserveUnits,
  					UnitSize, UnitPrice),
  			case convert(PriceReserve, Units, UnitPrice, UnitSize, UnitReserve,
  					ServiceId, ChargingKey, SessionId, Buckets2) of
  				{ok, Buckets3} ->
  					{0, NewReserveUnits, Buckets4} = update_session(Units,
  