Observing the log of Poisson RV

That’s fantastic - Thanks @junpenglao! Following the second link, my cdf is now:

def CdfPosPoisson(lam):
    # return the logP of all non-zero results of Poisson distribution.
    return tt.switch(tt.le(lam, np.log(2)),
                     tt.log(-tt.expm1(-lam)),
                     tt.log1p(-tt.exp(-lam)))

This performs quite well.
I had tried some numerical tricks for large lambda, but not for small, and the function (1-e^{-\lambda}) has stability issues at both large and small values of \lambda with a minimum around ln2, where these approximations switch.
Thanks again!