anchor.diff:  
   -spec uniform_s(N :: pos_integer(), state()) ->
   		       {pos_integer(), NewS :: state()}.
  -uniform_s(N, {Alg = #alg{uniform_n=Uniform}, AS0})
  +uniform_s(N, {Alg = #{uniform_n:=Uniform}, AS0})
     when is_integer(N), N >= 1 ->
       {X, AS} = Uniform(N, AS0),
       {X, {Alg, AS}}.
  
positive.code: -define(DEFAULT_ALG_HANDLER, exs64).
  -define(SEED_DICT, rand_seed).
  
  -record(alg, {type=?OLD_ALG_HANDLER :: alg(),
  	      uniform :: fun(), uniform_n :: fun()}).
  
  %% =====================================================================
  %% Types
  %% =====================================================================
  
negative.code: 
  %% Setup alg record
  mk_alg(as183) ->  %% DEFAULT_ALG_HANDLER
      {#{type=>as183, uniform=>fun as183_uniform/1,
  	  uniform_n=>fun as183_uniform/2},
       fun as183_seed/1};
  mk_alg(exs64) ->
      {#{type=>exs64, uniform=>fun exs64_uniform/1,
         uniform_n=>fun exs64_uniform/2},
       fun exs64_seed/1};
  mk_alg(exsplus) ->
      {#{type=>exsplus, uniform=>fun exsplus_uniform/1,
         uniform_n=>fun exsplus_uniform/2},
       fun exsplus_seed/1};
  mk_alg(exs1024) ->
      {#{type=>exs1024, uniform=>fun exs1024_uniform/1,
         uniform_n=>fun exs1024_uniform/2},
       fun exs1024_seed/1};
  mk_alg(sfmt) ->
      {#{type=>sfmt, uniform=>fun sfmt_uniform/1,
         uniform_n=>fun sfmt_uniform/2},
       fun sfmt_seed/1};
  mk_alg(tinymt) ->
      {#{type=>tinymt, uniform=>fun tinymt_uniform/1,
  	  uniform_n=>fun tinymt_uniform/2},
       fun tinymt_seed/1}.
  
  
  