anchor.diff:  			ServiceId, ChargingKey, SessionId, sort(Buckets), 0, []).
   %% @hidden
   charge_session(Type, Charge, Now, ServiceId, ChargingKey, SessionId,
  -		[#bucket{remain_amount = Remain, attributes = #{bucket_type := normal},
  +		[#bucket{remain_amount = Remain, attributes = Attributes,
   		start_date = Start, end_date = Expires} | T], Charged, Acc)
   		when Remain >= 0, Expires /= undefined, Expires =/= Start,
  -		Expires =< Now ->
  +		Expires =< Now, false == is_map_key(reservations, Attributes) ->
   	charge_session(Type, Charge, Now,
   			ServiceId, ChargingKey, SessionId, T, Charged, Acc);
   charge_session(Type, Charge, Now, ServiceId, ChargingKey, SessionId,
  
positive.code: 	Now = erlang:system_time(millisecond),
  	get_final(Buckets, ServiceId, ChargingKey, SessionId, Now, #{}, []).
  %% @hidden
  get_final([#bucket{remain_amount = 0,
  		attributes = #{bucket_type := normal}} | T], ServiceId,
  		ChargingKey, SessionId, Now, Debits, Acc) ->
  	get_final(T, ServiceId, ChargingKey, SessionId, Now, Debits, Acc);
  get_final([#bucket{remain_amount = R, attributes = #{bucket_type := normal},
  		end_date = Expires} | T], ServiceId,
  		ChargingKey, SessionId, Now, Debits, Acc)
  		when R >= 0, Expires /= undefined, Expires < Now ->
  	get_final(T, ServiceId, ChargingKey, SessionId, Now, Debits, Acc);
  get_final([#bucket{attributes = #{bucket_type := normal}} = B | T],
  		ServiceId, ChargingKey, SessionId, Now, Debits, Acc) ->
  	get_final(T, ServiceId, ChargingKey, SessionId, Now, Debits, [B | Acc]);
  get_final([#bucket{units = Units, attributes = Attributes,
  		remain_amount = R, end_date = EndDate} = B | T],
  
negative.code: 			Now, lists:reverse(Acc) ++ CentsBuckets, UnitsBuckets, []);
  convert(Price, Type, Size, ServiceId, ChargingKey, SessionId, Now,
  		[#bucket{remain_amount = R, end_date = Expires,
  		attributes = Attributes} | T], UnitsBuckets, Acc) when R >= 0,
  		Expires /= undefined, Expires =< Now,
  		false == is_map_key(reservations, Attributes) ->
  	convert(Price, Type, Size, ServiceId, ChargingKey, SessionId,
  			Now, T, UnitsBuckets, Acc);
  convert(Price1, Type, Size, ServiceId, ChargingKey, SessionId, Now,
  