anchor.diff:  	NewBuckets = [B#bucket{remain_amount = R - Charge} | T],
   	{0, Charged + Charge, NewBuckets ++ Acc};
   charge(cents, Charge, _Now, false, [#bucket{bucket_type = cents,
  -		remain_amount = R} = H | T], Acc, Charged) when R > Charge ->
  -	NewBuckets = [H#bucket{remain_amount = R - Charge} | T],
  +		remain_amount = R} = B | T], Acc, Charged) when R > Charge ->
  +	NewBuckets = [B#bucket{remain_amount = R - Charge} | T],
   	{0, Charged + Charge, NewBuckets ++ Acc};
   charge(Type, Charge, _Now, false, [#bucket{bucket_type = Type,
   		remain_amount = R} | _] = B, Acc, Charged) when R > Charge ->
  
positive.code: %%----------------------------------------------------------------------
  %%  internal functions
  %%----------------------------------------------------------------------
  -spec charge(Type, Charge, Final, Buckets) -> Result
  	when
  		Type :: octets | seconds | cents,
  		Charge :: integer(),
  		Final :: boolean(),
  		Buckets :: [#bucket{}],
  		Result :: {RemainCharge, Charged, Buckets},
  		RemainCharge :: integer(),
  		Charged :: integer().
  charge(Type, Charge, Final, Buckets) ->
  	Now = erlang:system_time(?MILLISECOND),
  	F = fun(#bucket{termination_date = T1},
  
negative.code: 			{RemainCharge, Charged, NewBuckets}
  	end.
  
  %% @hidden
  remove_session(SessionList, [Candidate | T]) ->
  	remove_session(remove_session1(SessionList, Candidate), T);
  remove_session(SessionList, []) ->
  