*! _fcoint_cv_fadl_cumul.ado -- FADL cumulative frequency critical values
*! Banerjee et al. (2017) Tables 2a, 2b
program define _fcoint_cv_fadl_cumul, rclass
  syntax, n(integer) q(integer) tobs(integer) model(string)
  if `n' < 1 local n = 1
  if `n' > 3 local n = 3
  if `q' < 1 local q = 1
  if `q' > 5 local q = 5
  * Table 2a: Constant
  local q_1_1_1 "-4.73 -4.09 -3.76 -4.61 -4.03 -3.72 -4.60 -4.02 -3.72"
  local q_1_2_1 "-5.40 -4.76 -4.43 -5.24 -4.68 -4.37 -5.23 -4.67 -4.37"
  local q_1_3_1 "-6.04 -5.37 -5.02 -5.80 -5.23 -4.94 -5.78 -5.22 -4.92"
  local q_1_4_1 "-6.59 -5.91 -5.55 -6.32 -5.75 -5.44 -6.28 -5.72 -5.42"
  local q_1_5_1 "-7.14 -6.43 -6.06 -6.78 -6.19 -5.88 -6.74 -6.18 -5.88"
  local q_2_1_1 "-4.96 -4.32 -3.98 -4.85 -4.26 -3.95 -4.81 -4.25 -3.95"
  local q_2_2_1 "-5.64 -4.97 -4.63 -5.47 -4.88 -4.57 -5.43 -4.86 -4.56"
  local q_2_3_1 "-6.23 -5.55 -5.20 -6.00 -5.43 -5.11 -5.97 -5.41 -5.11"
  local q_2_4_1 "-6.77 -6.09 -5.73 -6.49 -5.91 -5.60 -6.45 -5.89 -5.59"
  local q_2_5_1 "-7.30 -6.58 -6.21 -6.93 -6.37 -6.06 -6.89 -6.33 -6.03"
  local q_3_1_1 "-5.17 -4.51 -4.17 -5.06 -4.46 -4.15 -5.02 -4.45 -4.14"
  local q_3_2_1 "-5.80 -5.14 -4.79 -5.64 -5.05 -4.75 -5.61 -5.04 -4.74"
  local q_3_3_1 "-6.35 -5.69 -5.34 -6.18 -5.58 -5.28 -6.12 -5.57 -5.26"
  local q_3_4_1 "-6.91 -6.20 -5.84 -6.64 -6.06 -5.75 -6.59 -6.03 -5.73"
  local q_3_5_1 "-7.43 -6.71 -6.33 -7.08 -6.51 -6.20 -7.01 -6.46 -6.17"
  * Table 2b: Constant + trend
  local q_1_1_2 "-5.17 -4.55 -4.24 -5.04 -4.47 -4.19 -5.00 -4.46 -4.18"
  local q_1_2_2 "-5.89 -5.24 -4.93 -5.68 -5.13 -4.85 -5.65 -5.12 -4.84"
  local q_1_3_2 "-6.49 -5.85 -5.53 -6.23 -5.71 -5.43 -6.19 -5.67 -5.40"
  local q_1_4_2 "-7.05 -6.42 -6.09 -6.75 -6.22 -5.94 -6.69 -6.18 -5.91"
  local q_1_5_2 "-7.61 -6.95 -6.61 -7.22 -6.69 -6.41 -7.15 -6.64 -6.37"
  local q_2_1_2 "-5.36 -4.72 -4.40 -5.23 -4.66 -4.37 -5.20 -4.65 -4.37"
  local q_2_2_2 "-6.04 -5.38 -5.06 -5.84 -5.28 -4.99 -5.79 -5.26 -4.98"
  local q_2_3_2 "-6.63 -5.97 -5.64 -6.36 -5.83 -5.55 -6.34 -5.80 -5.53"
  local q_2_4_2 "-7.20 -6.52 -6.18 -6.87 -6.33 -6.05 -6.80 -6.29 -6.02"
  local q_2_5_2 "-7.72 -7.02 -6.67 -7.33 -6.79 -6.50 -7.27 -6.75 -6.48"
  local q_3_1_2 "-5.54 -4.89 -4.55 -5.39 -4.83 -4.53 -5.39 -4.83 -4.53"
  local q_3_2_2 "-6.15 -5.51 -5.17 -5.98 -5.42 -5.13 -5.95 -5.41 -5.12"
  local q_3_3_2 "-6.76 -6.08 -5.74 -6.48 -5.94 -5.66 -6.46 -5.93 -5.65"
  local q_3_4_2 "-7.28 -6.60 -6.26 -6.98 -6.43 -6.15 -6.93 -6.40 -6.13"
  local q_3_5_2 "-7.84 -7.11 -6.75 -7.43 -6.88 -6.60 -7.37 -6.85 -6.57"
  local mi = 1
  if "`model'" == "trend" local mi = 2
  local cvstr = "`q_`n'_`q'_`mi''"
  tokenize `cvstr'
  if `tobs' <= 100 {
    local cv1 = `1'
    local cv5 = `2'
    local cv10 = `3'
  }
  else if `tobs' <= 500 {
    local w = (`tobs' - 100) / 400
    local cv1  = `1' + `w' * (`4' - `1')
    local cv5  = `2' + `w' * (`5' - `2')
    local cv10 = `3' + `w' * (`6' - `3')
  }
  else {
    local cv1  = `4'
    local cv5  = `5'
    local cv10 = `6'
  }
  return scalar cv1  = `cv1'
  return scalar cv5  = `cv5'
  return scalar cv10 = `cv10'
end