anchor.diff:  %%          {stop, Reason}
   %%----------------------------------------------------------------------
   init(Backend) ->
  -    {X,Y,Z} = seed(),
  -    random:seed(X, Y, Z),
       Backend:init_backend(record_info(fields, ysession)),
       start_long_timer(),
       {ok, #state{backend = Backend}, to()}.
  
positive.code: 
  %% timeout if the server is idle for more than 2 minutes.
  to() ->
      2 * 60 * 1000.
  
  %% pretty good seed, but non portable
  seed() ->
      case (catch list_to_binary(
                    os:cmd("dd if=/dev/urandom ibs=12 count=1 2>/dev/null"))) of
          <<X:32, Y:32, Z:32>> ->
              {X, Y, Z};
          _ ->
              now()
      end.
  
  gnow() ->
      calendar:datetime_to_gregorian_seconds(
        calendar:local_time()).
  
negative.code:     handle_call({new_session, Opaque, ?TTL, Cleanup, Cookie}, From, State);
  
  handle_call({new_session, Opaque, TTL, Cleanup, undefined}, From, State) ->
      N = crypto:rand_bytes(16),
      Cookie = atom_to_list(node()) ++ [$-|binary_to_list(N)],
      handle_call({new_session, Opaque, TTL, Cleanup, Cookie}, From, State);
  
  handle_call({new_session, Opaque, TTL, Cleanup, Cookie}, _From, State) ->
  