anchor.diff:          [] ->
               false;
           {error, Reason} ->
  -            throw({retry, {dets_fail, User, Reason}})
  +            throw({dets_fail, User, Reason})
       end.
   
   set_old_user(User) ->
  
positive.code:                         ok ->
                              {ok, State#state{transfer_cnt = TransferCnt+1}};
                          {error, Reason} ->
                              throw({retry, {transfer_roster_fail, User, Reason}})
                      end
              end;
          false ->
              throw({retry, {read_roster_fail, User, PikaRosters, RdsRosters}})
      end.
  
  is_need_transfer(RdsRosters, PikaRosters) when length(RdsRosters) > length(PikaRosters) ->
  
negative.code: handle_loop(State) ->
      case read_user(State) of
          {ok, User, State1} ->
              case catch handle_user(State1, User) of
                  {ok, NewState, Add} ->
                      {ok, NewState, Add};
                  Other ->
                      {retry, State1, User, Other}
              end;
          {error, Reason} ->
              {error, Reason}
      end.
  
  handle_user(State, User) ->
      case is_old_user(User) of
          true ->
              %%?INFO_MSG("SkipUser:~p",[User]),
              {ok, State, 0};
          false ->
              %%?INFO_MSG("CheckUser:~p",[User]),
              {ok, State2} = transfer_roster(State, User),
              set_old_user(User),
              {ok, State2, 1}
      end.
  
  transfer_roster(#state{now_offset = NowOffset, 
  