anchor.diff:  eta(unknown, _DownloadRate) ->
       unknown.
   
  +%% @doc Format an ETA given bytes Left and a Rate
  +%% <p>This function will return an iolist() format of the ETA given
  +%% how many bytes there are `Left' to download and the current `DownloadRate'.
  +%% </p>
  +%% @end
  +-spec format_eta(integer(), float()) -> iolist().
   format_eta(Left, DownloadRate) ->
       case eta(Left, DownloadRate) of
   	{DaysLeft, {HoursLeft, MinutesLeft, SecondsLeft}} ->
  
positive.code:                  last = T - Fudge,
                   rate_since = T - Fudge }.
  
  % @doc Update the rate record with Amount new downloaded bytes
  % @end
  -spec update(#peer_rate{}, integer()) -> #peer_rate{}.
  update(#peer_rate {rate = Rate,
                     total = Total,
  
negative.code: -define(MAX_RATE_PERIOD, 20).
  
  %% ====================================================================
  
  %% @doc Convenience initializer for {@link init/1}
  %% @end
  init() -> init(?RATE_FUDGE).
  
  %% @doc Initialize the rate tuple.
  %% <p>Takes a single integer, fudge, which is the fudge factor used to start up.
  %% It fakes the startup of the rate calculation.</p>
  %% @end
  -spec init(integer()) -> #peer_rate{}.
  init(Fudge) ->
      T = now_secs(),
  