anchor.diff:  		Service, _Timestamp, _Address, _Direction, SessionAttributes) ->
   	case mnesia:dirty_read(product, ProdRef) of
   		[#product{balance = BucketRefs}] ->
  -			Buckets = lists:flatten([mnesia:read(bucket, Id, write) || Id <- BucketRefs]),
  +			Buckets = lists:flatten([mnesia:read(bucket, Id, sticky_write) || Id <- BucketRefs]),
   			authorize5(Service, Buckets, ServiceType, SessionAttributes, Attributes);
   		[] ->
   			mnesia:abort(product_not_found)
  
positive.code: 					[#product{product = OfferId, balance = BucketRefs} = Product] ->
  						case mnesia:read(offer, OfferId, read) of
  							[#offer{char_value_use = CharValueUse, name = OfferName} = _Offer] ->
  								Buckets = lists:flatten([mnesia:read(bucket, Id, write)
  										|| Id <- BucketRefs]),
  								F1 = fun(#bucket{units = cents, remain_amount = RM}) when RM < 0 ->
  										false;
  
negative.code: 		Direction, SessionAttributes) ->
  	case mnesia:read(product, ProdRef, read) of
  		[#product{product = OfferId, balance = BucketRefs}] ->
  			Buckets = lists:flatten([mnesia:read(bucket, Id, sticky_write) || Id <- BucketRefs]),
  			F = fun({'Session-Id', _}) ->
  					true;
  				({?AcctSessionId, _}) ->
  