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,
  +subscription(#product{id = ProdRef, payment = Payments} = Product,
   		Now, false, Buckets, [#price{type = recurring, period = Period,
   			amount = Amount, alteration = #alteration{units = Units, size = Size,
   			amount = AllowanceAmount}, name = Name} | T]) when (Period /= undefined)
  
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 = 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,
  		Now, true, Buckets, [#price{type = recurring, period = Period,
  			amount = Amount, alteration = #alteration{units = Units,
  			size = Size, amount = AllowanceAmount}, name = Name} | T]) when
  
negative.code: 	{Product1, Buckets1} = lists:foldl(F, {Product, Buckets}, Bundled),
  	subscription(Product1, Now, InitialFlag, Buckets1, Prices).
  %% @hidden
  subscription(#product{id = ProdRef} = Product, Now, true, Buckets,
  		[#price{type = one_time, amount = Amount,
  			alteration = undefined} | T]) ->
  	NewBuckets = charge(ProdRef, Amount, Buckets),
  	subscription(Product, Now, true, NewBuckets, T);
  subscription(#product{id = ProdRef} = Product, Now, true,
  		Buckets, [#price{type = one_time, amount = PriceAmount,
  			alteration = #alteration{units = Units, size = Size,
  			amount = AlterAmount}} | T]) ->
  