anchor.diff:        [S#state.url, S#state.info_hash, S#state.peer_id,
          Uploaded, Downloaded, Left, Port, E]).
   
  +handle_tracker_contact(S, Event) ->
  +    {ok, NextContactTime, NS} = contact_tracker(S, Event),
  +    TimerRef = gen_fsm:start_timer(NextContactTime, may_contact),
  +    NS#state{timer = TimerRef}.
  +
  +
  +handle_nonregular(S, Event) ->
  +    NS = remove_timer(S),
  +    handle_tracker_contact(NS, Event).
  +
  +remove_timer(S) ->
  +    T = S#state.timer,
  +    gen_fsm:cancel_timer(T),
  +    S#state{timer = none}.
  +
   %%% Tracker response lookup functions
   find_next_request_time(BCoded) ->
       bcoding:search_dict_default(BCoded, "interval", ?DEFAULT_REQUEST_TIMEOUT).
  
positive.code:     ErrorMessage = fetch_error_message(BC),
      WarningMessage = fetch_warning_message(BC),
      if
  	%% Change these casts!
  	ErrorMessage /= none ->
  	    torrent_control:tracker_error_report(ControlPid, ErrorMessage);
  	WarningMessage /= none ->
  
negative.code: 	        info_hash = none,
  	        peer_id = none,
  		trackerid = none,
  		timer = none,
  	        control_pid = none}).
  
  -define(SERVER, ?MODULE).
  