anchor.diff:  	NewPayments = [{Name, end_period(Now, Period)} | Payments],
   	Product1 = Product#product{payment = NewPayments},
   	subscription(Product1, Now, true, NewBuckets, T);
  -subscription(#product{name = ProdRef, payment = Payments} = Product, Now, false, Buckets,
  +subscription(#product{id = ProdRef, payment = Payments} = Product, Now, false, Buckets,
   		[#price{type = recurring, period = Period, amount = Amount,
   			name = Name, alteration = undefined} | T]) when Period /= undefined ->
   	{NewPayments, NewBuckets} = dues(Payments, Now, Buckets, Name, Period, ProdRef, Amount),
   	Product1 = Product#product{payment = NewPayments},
   	subscription(Product1, Now, false, NewBuckets, T);
  -subscription(#product{name = ProdRef, payment = Payments} = Product,
  +subscription(#product{id = ProdRef, payment = Payments} = Product,
   		Now, true, Buckets, [#price{type = recurring, period = Period,
   			amount = Amount, alteration = #alteration{units = Units,
   			size = Size, amount = AllowanceAmount}, name = Name} | T]) when
  
positive.code: 	NewPayments = [{Name, end_period(Now, Period)} | Payments],
  	Product1 = Product#product{payment = NewPayments},
  	subscription(Product1, Now, true, NewBuckets, T);
  subscription(#product{name = ProdRef, payment = Payments}
  		= Product, Now, false, Buckets, [#price{type = usage, name = Name,
  		alteration = #alteration{type = recurring, period = Period, units = Units,
  		size = Size, amount = Amount}} | T]) when Period /= undefined, Units == octets;
  
negative.code: 			| NewBuckets1]),
  	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 ->
  