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