anchor.diff:  
   -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.
  
positive.code: -spec uniform_s(N :: pos_integer(), S :: emprng_state()) ->
        {pos_integer(), NewS :: emprng_state()}.
  
  
  
negative.code: %% Note: the type of the values depends on the algorithm handler.
  %% (new function)
  
  -spec seed(AS :: emprng_alg_state(), Alg :: emprng_alg_handler()) ->
        undefined | emprng_state().
  
  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.
  