anchor.diff:  %% Note: the type of the values depends on the algorithm handler.
   %% (new function)
   
  --spec seed(X :: emprng_alg_state(), Alg :: emprng_alg_handler()) ->
  +-spec seed(AS :: emprng_alg_state(), Alg :: emprng_alg_handler()) ->
         undefined | emprng_state().
   
  -seed(X, Alg) ->
  -    seed_put({?DEFAULT_ALG_HANDLER,
  -            % No type checking on X
  -             X}).
  +seed(AS, Alg) ->
  +    % No type checking on AS
  +    seed_put({Alg, AS}).
   
   %%% uniform/0, uniform/1, uniform_s/1, uniform_s/2 are all
   %%% uniformly distributed random numbers.
  
positive.code: -spec uniform_s(N :: pos_integer(), S :: emprng_state()) ->
        {pos_integer(), NewS :: emprng_state()}.
  
  
  
negative.code: 
  -spec uniform_s(S :: emprng_state()) -> {float(), NewS :: emprng_state()}.
  
  uniform_s(S) ->
      {Alg, AS} = S,
      {X, AS2} = Alg:uniform_S(AS),
      {X, {Alg, AS2}}.
  
  %% uniform_s/2: given an integer N >= 1 and a state, uniform_s/2
  %% uniform_s/2 returns a random integer X where 1 =< X =< N,
  %% and a new state.
  