anchor.diff:  		Usage >= 0 ->
   	F = fun() ->
   				case mnesia:read(subscriber, Subscriber, write) of
  -					[#subscriber{balance = Balance, disconnect = false} = Entry] ->
  +					[#subscriber{balance = Balance, disconnect = Flag} = Entry] ->
   						NewBalance = Balance - Usage,
   						NewEntry = Entry#subscriber{balance = NewBalance},
   						mnesia:write(subscriber, NewEntry, write),
  -						NewBalance;
  +						{NewBalance, Flag};
   					[] ->
   						throw(not_found)
   				end
   	end,
   	case mnesia:transaction(F) of
  -		{atomic, NewBalance} ->
  -			{ok, NewBalance};
  +		{atomic, {NewBalance, Flag}} ->
  +			{ok, NewBalance, Flag};
   		{aborted, {throw, Reason}} ->
   			{error, Reason};
   		{aborted, Reason} ->
  +			error_logger:error_report(["Failed to decrement balance",
  +					{error, Reason}, {subscriber, Subscriber}]),
   			{error, Reason}
   	end.
   
  
positive.code: 
  -spec decrement_balance(Subscriber :: string() | binary(),
  		Usage :: non_neg_integer()) ->
  	{ok, NewBalance :: integer()}| {error, Reason :: not_found | term()}.
  %% @doc Decrements subscriber's current balance
  decrement_balance(Subscriber, Usage) when is_list(Subscriber) ->
  	decrement_balance(list_to_binary(Subscriber), Usage);
  
negative.code: 		{ok, AcctSessionId} = radius_attributes:find(?AcctSessionId, Attributes),
  		ok = disk_log:log(Log, Attributes),
  		NewState = case decrement_balance(Subscriber, Usage) of
  			{ok, OverUsed, false} when OverUsed =< 0 ->
  				case supervisor:start_child(DiscSup, [[Address, NasID,
  						Subscriber, AcctSessionId, Secret, Attributes, DiskId], [{debug, [trace]}]]) of
  					{ok, _Child} ->
  