anchor.diff:  						N when N >= 0 ->
   							rate4(Protocol, Service, Buckets,
   									Price#price{amount = N}, Flag, DebitAmounts, ReserveAmounts,
  -									State#{rated => Rated#rated{price_type = tariff,
  +									State#state{rated = Rated#rated{price_type = tariff,
   											description = Description}});
   						_N ->
   							throw(negative_amount)
  
positive.code: 		[#offer{name = OfferName} = Offer | _] = lists:foldl(F, [], Bundle),
  		rate2(Protocol, Service, Buckets, Timestamp,
  				Address, Direction, Offer, Flag, DebitAmounts,
  				ReserveAmounts, State#{rated => #rated{product = OfferName}})
  	catch
  		_:_ ->
  			throw(invalid_bundle_product)
  
negative.code: 	{out_of_credit, SessionList};
  rate6(#service{session_attributes = SessionList} =
  		Service1, Buckets, initial, 0, 0, _Reserve, Reserved,
  		#state{buckets = OldBuckets, session_id = SessionId, product = P}) ->
  	NewBRefs = update_buckets(P#product.balance, OldBuckets, Buckets),
  	ok = mnesia:write(P#product{balance = NewBRefs}),
  	NewSessionList = add_session(SessionId, SessionList),
  