anchor.diff:  seed(Alg, AS) ->
       % No type checking on AS
       seed_put({Alg, AS}).
  +
  +%% seed/4: seeds RNG with the algorithm handler and
  +%% given three integers in the process dictionary,
  +%% and returns the old state.
  +%% (new function)
  +
  +-spec seed(Alg :: emprng_alg_handler(),
  +           A1 :: integer(), A2 :: integer(), A3 :: integer()) ->
  +           undefined | emprng_state().
  +
  +seed(Alg, A1, A2, A3) ->
  +    seed_put({Alg, Alg:seed(A1, A2, A3)}).
  +
  +%% seed/3: seeds RNG with integer values in the process dictionary,
  +%% and returns the old state.
  +%% (compatible with the random module)
  +
  +-spec seed(A1 :: integer(), A2 :: integer(), A3 :: integer()) ->
  +      undefined | emprng_state().
  +
  +seed(A1, A2, A3) ->
  +    seed(?DEFAULT_ALG_HANDLER, A1, A2, A3).
   
   %%% uniform/0, uniform/1, uniform_s/1, uniform_s/2 are all
   %%% uniformly distributed random numbers.
  
positive.code: 
  -module(emprng).
  
  -export([seed/0, seed/1, seed/2, seed/3, seed0/0, seed0/1,
           uniform/0, uniform/1, uniform_s/1, uniform_s/2]).
  
  -define(DEFAULT_ALG_HANDLER, emprng_as183).
  
negative.code: seed({Alg, AS}) ->
      seed(Alg, AS).
  
  %% seed/2: seeds RNG with the algorithm handler and
  %% given internal state value (depending on the algorihm handler)
  %% in the process dictionary, and returns the old state.
  %% Note: the type of the values depends on the algorithm handler.
  %% (new function)
  