anchor.diff:  %% 	number of units required and expiration of `Validity' is
   %% 	added to `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.
  +%% 	Returns `{RemainingUnits, UnitsCharged, NewBuckets}' where
  +%% 	`UnitsCharged' is the total amount of units in the newly
  +%%		created usage bucket, `RemainingUnits' is the left over
  +%%		amount not charged and `NewBuckets' is the updated bucket list.
   %%
   %% @private
   purchase(Type, Price, Size, Used, Validity, Final, Buckets) ->
  
positive.code: 	case charge(cents, Charge, true, Buckets) of
  		{0, Charge, NewBuckets} when Final == true,
  				(UnitsNeeded * Size - Used) == 0 ->
  			{0, Charge, NewBuckets};
  		{0, Charge, NewBuckets} when Final == false ->
  			Bucket = #bucket{bucket_type = Type,
  				remain_amount = UnitsNeeded * Size,
  				termination_date = Validity,
  				start_date = erlang:system_time(?MILLISECOND)},
  			{0, Charge, [Bucket | NewBuckets]};
  		{0, Charge, NewBuckets} when Final == true ->
  			Bucket = #bucket{bucket_type = Type,
  				remain_amount = UnitsNeeded * Size - Used,
  				termination_date = Validity,
  				start_date = erlang:system_time(?MILLISECOND)},
  			{0, Charge, [Bucket | NewBuckets]};
  		{RemainingCharge, Charged, NewBuckets} ->
  			{RemainingCharge, Charged, NewBuckets}
  	end.
  
  %% @hidden
  
negative.code: 		Validity :: integer(),
  		Final :: boolean(),
  		Buckets :: [#bucket{}],
  		Result :: {RemainingUnits, UnitsCharged, NewBuckets},
  		RemainingUnits :: integer(),
  		UnitsCharged :: integer(),
  		NewBuckets :: [#bucket{}].
  %% @doc Manage usage pricing and debit monetary amount buckets.
  %%
  