anchor.diff:      ],
       RegContacts = update_regcontacts(Contacts, Req, Times, Path, ObProc, GruuProc, 
                                        RegContacts0),
  -    case 
  -        [true || #reg_contact{index={ob, _, _}, expire=Exp} <- RegContacts, Exp>0] 
  -    of
  -        [_, _|_] -> throw({invalid_request, "Several 'reg-id' Options"});
  -        _ -> ok
  -    end,
       case RegContacts of
           [] -> 
               case callback(AppId, {del, AOR}) of
  
positive.code:     lists:reverse(lists:keysort(#reg_contact.updated, Acc)).
  
  
  % %% @private
  % -spec update_regcontacts([reg_contact()], nksip_lib:timestamp(), [reg_contact()]) ->
  %     [reg_contact()].
  
  % update_regcontacts([RegContact|Rest], Now, Acc) ->
  %     % A new registration will overwite an old Contact if it has the same index
  %     #reg_contact{index=Index, expire=Expire, cseq=CSeq, call_id=CallId} = RegContact,
  %     Acc1 = case lists:keytake(Index, #reg_contact.index, Acc) of
  %         false when Expire==Now ->
  %             Acc;
  %         false ->
  %             [RegContact|Acc];
  %         {value, #reg_contact{call_id=CallId, cseq=OldCSeq}, _} when OldCSeq >= CSeq -> 
  %             throw({invalid_request, "Rejected Old CSeq"});
  %         {value, _, Acc0} when Expire==Now ->
  %             Acc0;
  %         {value, _, Acc0} ->
  %             [RegContact|Acc0]
  %     end,
  %     update_regcontacts(Rest, Now, Acc1);
          
  % update_regcontacts([], _Now, Acc) ->
  %     lists:reverse(lists:keysort(#reg_contact.updated, Acc)).
  
  
  %% @priavte
  
negative.code:         false when Expires==0 ->
              {undefined, Acc};
          false ->
              {#reg_contact{min_tmp_pos=0, next_tmp_pos=0, meta=[]}, Acc};
          {value, #reg_contact{call_id=CallId, cseq=OldCSeq}, _} when OldCSeq >= CSeq -> 
              throw({invalid_request, "Rejected Old CSeq"});
          {value, _, Acc0} when Expires==0 ->
  