anchor.diff:  			amount = Amount, alteration = Alteration}.
   
   overage(SD, Type, Units, Amount, Size) ->
  +	overage(SD, Type, Units, Amount, Size, undefined).
  +overage(SD, Type, Units, Amount, Size, Alter) ->
   	#price{name = ocs:generate_identity(),
   			start_date = SD, type = Type, size = Size,
  -			amount = Amount, units = Units}.
  +			amount = Amount, units = Units, alteration = Alter}.
   
   alteration(SD, Type, Units, Size) ->
  +	alteration(SD, Type, undefined, Units, Size, 0).
  +alteration(SD, Type, Period, Units, Size, Amount) ->
   	#alteration{name = ocs:generate_identity(),
  -			start_date = SD, type = Type,
  -			units = Units, size = Size, amount = 0}.
  -
  +			start_date = SD, type = Type, period = Period,
  +			units = Units, size = Size, amount = Amount}.
  +
  
positive.code: 	true = lists:all(F1, BRefs),
  	F2 = fun({_, DueDate}) -> DueDate == ocs:end_period(Expired, monthly) end,
  	lists:any(F2, Payments).
  %%---------------------------------------------------------------------
  %%  Internal functions
  %%---------------------------------------------------------------------
  
  one_time(SD, Amount) ->
  	#price{name = ocs:generate_identity(),
  			start_date = SD, type = one_time, amount = Amount}.
  
  recurring(SD, Period, Amount, Alteration) ->
  	#price{name = ocs:generate_identity(),
  
negative.code: 				case ocs:find_bucket(BId) of
  					{ok, #bucket{remain_amount = RM1}} when BId == BId1 ->
  							RM1 == B1#bucket.remain_amount - P2#price.amount;
  					{ok, #bucket{units = octets, remain_amount = RM1}} ->
  							RM1 == Alteration#alteration.size;
  					{ok, #bucket{units = cents, remain_amount = RM1}} ->
  							RM1 == -4245;
  					_R ->
  						false
  				end
  