anchor.diff:  %% 	number of units required and expiration of `Validity' is
   %% 	added to `Buckets'.
   %%
  -%% 	Returns `{RemainingCharge, Charged, Buckets}' where
  -%% 	`Charge' is the total amount debited from the buckets,
  +%% 	Returns `{RemainingCharge, Charged, NewBuckets}' where
  +%% 	`Charged' is the total amount debited from the buckets,
   %% 	`RemainingCharge' is the left over amount not charged
   %% 	and `NewBuckets' is the updated bucket list.
   %%
  
positive.code: 		false ->
  			update_session1(T, Attributes)
  	end.
  
negative.code: 		{Type, Used} = lists:keyfind(Type, 1, DebitAmount),
  		case charge(Type, Used, true, Buckets) of
  			{R1, _C1, NB1} when R1 > 0 ->
  				purchase(Type, Price, Size, R1, Validity, true, NB1);
  			{R1, C1, NB1} ->
  				{R1, C1, NB1}
  		end
  	of
  		{RemainingCharge, _Charged, NewBuckets}  when RemainingCharge > 0 ->
  			rate3(Subscriber#subscriber{buckets = NewBuckets},
  					RemainingCharge, Flag, ReserveAmount, SessionIdentification);
  		{RemainingCharge, _Charged, NewBuckets} ->
  			rate2(Subscriber#subscriber{buckets = NewBuckets}, Prices,
  					Validity, Flag, ReserveAmount, SessionIdentification, RemainingCharge)
  	catch
  		_:_ ->
  			throw(price_not_found)
  