anchor.diff:      "0.5";
   timeout2str(Timeout) ->
       integer_to_list(Timeout div 1000).
  +
  +length(TimerList) when is_record(TimerList, siptimerlist) ->
  +    length(TimerList#siptimerlist.list).
  +
  +
  +%%====================================================================
  +%% Internal functions
  +%%====================================================================
  +
  +make_siptimerlist([]) ->
  +    #siptimerlist{list=[]};
  +make_siptimerlist(In) ->
  +    #siptimerlist{list=make_siptimerlist2(In, [])}.
  +
  +make_siptimerlist2([], Res) ->
  +    Res;
  +make_siptimerlist2([H | T], Res) when record(H, siptimer) ->
  +    make_siptimerlist2(T, lists:append(Res, [H]));
  +make_siptimerlist2(In, Res) ->
  +    erlang:fault("Trying to make siptimerlist of something else than siptimers!", [In, Res]).
  +
  +get_timers_something_matching2(Key, Value, [], Res) ->
  +    Res;
  +get_timers_something_matching2(appsignal, Value, [H | T], Res) when record(H, siptimer), H#siptimer.appsignal == Value ->
  +    get_timers_something_matching2(appsignal, Value, T, lists:append(Res, [H]));
  +get_timers_something_matching2(Key, Value, [H | T], Res) when record(H, siptimer) ->
  +    get_timers_something_matching2(Key, Value, T, Res).    
  
positive.code:     logger:log(debug, "Siptimer: Asked to stop timers but none were supplied"),
      error;
  stop_timers(TimerList) when record(TimerList, siptimerlist) ->
      stop_timers2(TimerList#siptimerlist.list),
      ok.
  
  stop_timers2([SipTimer | Rest]) ->
      Timer = SipTimer#siptimer.timer,
      Ref = SipTimer#siptimer.ref,
  
negative.code:     Ref = SipTimer#siptimer.ref,
      make_siptimerlist(update_timer2(Ref, SipTimer, TList#siptimerlist.list, TList)).
      
  update_timer2(Ref, _, [], TList) ->
      logger:log(error, "Siptimer: Asked to update a timer, but I can't find it", [Ref]),
      logger:log(error, "Siptimer: Asked to update a timer with ref=~p, but I can't find it in list :~n~p",
  