exactPoiCI <- function (X, conf.level=0.95) {
  alpha = 1 - conf.level
  upper <- 0.5 * qchisq(1-alpha/2, 2*X+2)
  lower <- 0.5 * qchisq(alpha/2, 2*X)
  return(c(lower, upper))
}

exactPoiCI(42, 0.9)
exactPoiCI(42)
exactPoiCI(42, 0.99)
LS0tDQp0aXRsZTogIkhvdyB0byBjYWxjdWxhdGUgY29uZmlkZW5jZSBpbnRlcnZhbCBmb3IgY291bnQgZGF0YSBpbiBSPyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KYGBge3J9DQpleGFjdFBvaUNJIDwtIGZ1bmN0aW9uIChYLCBjb25mLmxldmVsPTAuOTUpIHsNCiAgYWxwaGEgPSAxIC0gY29uZi5sZXZlbA0KICB1cHBlciA8LSAwLjUgKiBxY2hpc3EoMS1hbHBoYS8yLCAyKlgrMikNCiAgbG93ZXIgPC0gMC41ICogcWNoaXNxKGFscGhhLzIsIDIqWCkNCiAgcmV0dXJuKGMobG93ZXIsIHVwcGVyKSkNCn0NCg0KZXhhY3RQb2lDSSg0MiwgMC45KQ0KZXhhY3RQb2lDSSg0MikNCmV4YWN0UG9pQ0koNDIsIDAuOTkpDQpgYGANCg0K