anchor.diff:                  logfactor <- logfactor + add
               else
                   values.[i] <- old + add
  +        // Jumps out of parameter bounds count as iterations and are automatically rejected
  +        // as discussed in https://darrenjw.wordpress.com/2012/06/04/metropolis-hastings-mcmc-when-the-proposal-and-target-have-differing-support/.
           let inbounds = alt |> List.forall (fun i ->
               values.[i]>=pall.[i].lower && values.[i]<=pall.[i].upper)
           // calc new lnlike
  
positive.code:                 prior = (let pr = defaultPrior prior in if pr = nonInformative then None else Some pr)
                  }, 
              Array.append pvalues values)
      member x.Add(name:string, value:float, lower:float, upper:float, ?isFixed, ?isLog, ?prior) =
          // by default, the parameter is a scalar value
          x.Add(name, [|value|], lower, upper, (if defaultArg isFixed false then System.Int32.MaxValue else 0), defaultLog isLog, defaultPrior prior)
      member x.Add(name, value, lower, upper, delay, ?isLog, ?prior) =
          // by default, the parameter is a scalar value
          x.Add(name, [|value|], lower, upper, delay, defaultLog isLog, defaultPrior prior)
      member x.Add(name, size, value, lower, upper, ?isFixed, ?isLog, ?prior) = 
          if size<1 then
              invalidArg "size" "parameter size must be 1 or greater."
          x.Add(name, Array.create size value, lower, upper, (if defaultArg isFixed false then System.Int32.MaxValue else 0), defaultLog isLog, defaultPrior prior)
      member x.Add(name, size, value, lower, upper, delay, ?isLog, ?prior) = 
          if size<1 then
              invalidArg "size" "parameter size must be 1 or greater."
  
negative.code:             dlik >= 0. ||
              (let rndnum = 1.0 - rng.uniform_float64()
              log rndnum < dlik))
  #endif
          // act on acceptance
          for i in alt do
              runalt.[i] <- runalt.[i]+1
  