anchor.diff:  			end
   	end.
   %% @hidden
  -charge3(#service{session_attributes = SessionList} = Service1, Product, Buckets, final,
  -		{Units, Charge}, {Units, Charged}, {Units, 0}, {Units, 0},
  -		#state{rated = Rated, session_id = SessionId,
  -		service_id = ServiceId, charging_key = ChargingKey,
  +charge3(#service{session_attributes = SessionList, name = ServiceId} = Service1,
  +		Product, Buckets, final, {Units, Charge}, {Units, Charged},
  +		{Units, 0}, {Units, 0}, #state{rated = Rated, session_id = SessionId,
  +		charging_key = ChargingKey,
   		buckets = OldBuckets}) when Charged >= Charge ->
   	{Debits, NewBuckets} = get_final(ServiceId,
   			ChargingKey, SessionId, Buckets),
  
positive.code: 							{Units, 0}, {Units, 0}, State)
  			end
  	end;
  charge2(Service, #product{id = ProductId} = Product, Buckets,
  		#price{units = Units, size = UnitSize, amount = UnitPrice},
  		interim, {Units, Damount} = DebitAmount, {Units, Ramount} = ReserveAmount,
  		#state{session_id = SessionId, service_id = ServiceId,
  		charging_key = ChargingKey} = State) ->
  	case update_session(Units, Damount, Ramount,
  			ServiceId, ChargingKey, SessionId, Buckets) of
  
negative.code: 									case lists:all(F2, Buckets) of
  										true ->
  											State = #state{buckets = Buckets,
  													charging_key = ChargingKey,
  													service_network = ServiceNetwork,
  													session_id = get_session_id(SessionAttributes)},
  											{rate1(Protocol, #service{name = ServiceId} = Service, Product, Buckets,
  													Timestamp, Address, Direction, Offer,
  													Flag, DebitAmounts, ReserveAmounts, ServiceType, State), RedirectServerAddress};
  										false ->
  