anchor.diff:  			event
   	end.
   
  --spec start_disconnect(Svc, AppAlias, SessionId, OHost, DHost, ORealm,
  -		DRealm, AuthAppId, State) -> NewState
  -	when
  -		Svc :: term(),
  -		AppAlias :: term(),
  -		SessionId :: string(),
  -		OHost :: string() | binary(),
  -		DHost :: string() | binary(),
  -		ORealm :: string() | binary(),
  -		DRealm :: string() | binary(),
  -		AuthAppId :: integer(),
  -		State :: #state{},
  -		NewState :: #state{}.
  -%% @doc Start a disconnect_fsm to send DIAMETER Abort-Session-Request and
  -%% store disconnect_fsm pid() in state.
   %% @hidden
  -start_disconnect(Svc, Alias, SessionId, OHost, DHost, ORealm, DRealm,
  -		AuthAppId, #state{handlers = Handlers , disc_sup = DiscSup} = State) ->
  -	case gb_trees:lookup(SessionId,  Handlers) of
  -		{value, _DiscPid} ->
  -			State;
  -		none ->
  -			DiscArgs = [Svc, Alias, SessionId, OHost, DHost, ORealm,
  -					DRealm, AuthAppId],
  -			StartArgs = [DiscArgs, []],
  -			case supervisor:start_child(DiscSup, StartArgs) of
  -				{ok, DiscFsm} ->
  -					link(DiscFsm),
  -					NewHandlers = gb_trees:insert(SessionId, DiscFsm, Handlers),
  -					State#state{handlers = NewHandlers};
  -				{error, Reason} ->
  -					error_logger:error_report(["Failed to initiate session disconnect function",
  -							{module, ?MODULE}, {session_id, SessionId}, {destion_host, DHost},
  -							{error, Reason}]),
  -					State
  -			end
  -	end.
  -
  +%% @doc Start a disconnect_fsm to send DIAMETER Abort-Session-Request
  +%%
  +start_disconnect([], _State) ->
  +	ok;
  +start_disconnect([{_, SessionAttributes} | T], State) ->
  +	start_disconnect1(SessionAttributes, State),
  +	start_disconnect(T, State).
  +%% @hidden
  +start_disconnect1(SessionAttributes, #state{disc_sup = DiscSup}) ->
  +	Svc = ocs_diameter_acct_service,
  +	Alias = ocs_diameter_base_application,
  +	AuthAppId = ?CC_APPLICATION_ID,
  +	SessionId = proplists:get_value('Session-ID', SessionAttributes),
  +	OHost = proplists:get_value('Origin-Host', SessionAttributes),
  +	ORealm = proplists:get_value('Origin-Realm', SessionAttributes),
  +	DHost = proplists:get_value('Destination-Host', SessionAttributes),
  +	DRealm = proplists:get_value('Destination-Realm', SessionAttributes),
  +	DiscArgs = [Svc, Alias, SessionId, OHost, DHost, ORealm,
  +			DRealm, AuthAppId],
  +	StartArgs = [DiscArgs, []],
  +	supervisor:start_child(DiscSup, StartArgs).
  +
  
positive.code: 	end;
  request1(?'DIAMETER_CC_APP_CC-REQUEST-TYPE_TERMINATION_REQUEST' = RequestType,
  		#diameter_cc_app_CCR{'Multiple-Services-Credit-Control' = [MSCC | _]} = Request,
  		SId, RequestNum, Subscriber, OHost, DHost, ORealm, DRealm, State) ->
  	try
  		USU =  case MSCC of
  			#'diameter_cc_app_Multiple-Services-Credit-Control'{'Used-Service-Unit' =
  
negative.code: 				error_logger:warning_report(["out of credit",
  						{module, ?MODULE}, {subscriber, Subscriber},
  						{origin_host, OHost}]),
  				start_disconnect(SL, State),
  				{Reply, NewState} = generate_diameter_answer(Request, SId, Subscriber,
  						0, ?'DIAMETER_CC_APP_RESULT-CODE_CREDIT_LIMIT_REACHED', OHost,
  						ORealm, ?CC_APPLICATION_ID, RequestType, RequestNum, State),
  				{reply, Reply, NewState};
  			{error, subscriber_not_found} ->
  				error_logger:warning_report(["diameter accounting subscriber not found",
  						{module, ?MODULE}, {subscriber, Subscriber},
  