anchor.diff:  % (see B.A. Wichmann and I.D.Hill, in 
   %  'An efficient and portable pseudo-random number generator',
   %  Journal of Applied Statistics. AS183. 1982, or Byte March 1987)
  +% a single random:uniform/1 call can provide a maximum of 44 bits
  +% (currently this is not significantly faster
  +%  because multiple function calls are necessary)
   get_v4_fast() ->
  -    Rand1 = random:uniform(1073741824) - 1, % random 30 bits
  -    Rand2 = random:uniform(1073741824) - 1, % random 30 bits
  -    Rand3 = random:uniform(1073741824) - 1, % random 30 bits
  -    <<Rand3Part1:6, Rand3Part2:24>> = <<Rand3:30>>,
  -    Rand4 = random:uniform(4294967296) - 1, % random 32 bits
  -    <<Rand1:30, Rand2:30,
  +    Rand1 = random:uniform(17592186044416) - 1, % random 44 bits
  +    Rand2 = random:uniform(17592186044416) - 1, % random 44 bits
  +    Rand3 = random:uniform(17179869184) - 1, % random 34 bits
  +    <<Rand2a:16, Rand2b:6, Rand2c:22>> = <<Rand2:44>>,
  +    <<Rand1:44, Rand2a:16,
         0:1, 1:1, 0:1, 0:1,  % version 4 bits
  -      Rand3Part1:6,
  -      0:1, 1:1,            % reserved bits
  -      Rand3Part2:24, Rand4:32>>.
  +      Rand2b:6,
  +      0:1, 1:1,            % reserved bits
  +      Rand2c:22, Rand3:34>>.
   
   % crypto:rand_bytes/1 repeats in the same way as
   % RAND_pseudo_bytes within OpenSSL.
  
positive.code:       ClockSeqLow:8,
        NodeId/binary>>.
  
  get_v1_time(#uuid_state{epoch_seconds = Epoch}) ->
      Now = {_, _, Micro} = erlang:now(),
      NowUTC = calendar:now_to_universal_time(Now),
      NowSecs = calendar:datetime_to_gregorian_seconds(NowUTC),
      (NowSecs - Epoch) * 1000000 + Micro;
  
  get_v1_time(Value)
      when is_binary(Value), byte_size(Value) == 16 ->
  
negative.code:         node_id,
          clock_seq,
          clock_seq_high,
          clock_seq_low
      }).
  
  %%%------------------------------------------------------------------------
  