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