anchor.diff:  			| Buckets]),
   	subscription(Product, Now, true, NewBuckets, T);
   subscription(Product, Now, false, Buckets,
  -		[#price{type = usage, alteration = #alteration{type = one_time}} | T]) ->
  +		[#price{type = Type, alteration = #alteration{type = one_time}} | T])
  +		when ((Type == usage) or (Type == tariff)) ->
   	subscription(Product, Now, false, Buckets, T);
   subscription(#product{id = ProdRef, payment = Payments} = Product,
   		Now, true, Buckets, [#price{type = recurring, period = Period,
  
positive.code: 	Product1 = Product#product{payment = NewPayments},
  	subscription(Product1, Now, false, NewBuckets2, T);
  subscription(#product{id = ProdRef, payment = Payments} = Product, Now, true,
  		Buckets, [#price{type = usage, alteration = #alteration{type = recurring,
  		period = Period, units = Units, size = Size, amount = Amount}, name = Name}
  		| T]) when Period /= undefined, Units == octets; Units == seconds; Units == messages ->
  	N = erlang:unique_integer([positive]),
  	NewBuckets = charge(ProdRef, Amount, [#bucket{id = generate_bucket_id(),
  			units = Units, remain_amount = Size, product = [ProdRef],
  
negative.code: subscription(Product, Now, false, Buckets, [#price{type = one_time} | T]) ->
  	subscription(Product, Now, false, Buckets, T);
  subscription(#product{id = ProdRef} = Product, Now, true, Buckets,
  		[#price{type = Type, alteration = #alteration{type = one_time,
  			units = Units, size = Size, amount = AlterationAmount}} | T])
  		when ((Type == usage) or (Type == tariff)) ->
  	N = erlang:unique_integer([positive]),
  	NewBuckets = charge(ProdRef, AlterationAmount,
  		[#bucket{id = generate_bucket_id(), units = Units,
  