For the expon_uptrunc, given mu and b, return lam.
    Similar to geom_uptrunc

def _expon_solve_lam_from_mu(mu, b):
    """
    For the expon_uptrunc, given mu and b, return lam.
    Similar to geom_uptrunc
    """

    def lam_eq(lam, mu, b):
        # Small offset added to denominator to avoid 0/0 erors
        lam, mu, b = Decimal(lam), Decimal(mu), Decimal(b)
        return ( (1 - (lam*b + 1) * np.exp(-lam*b)) /
                 (lam - lam * np.exp(-lam*b) + Decimal(1e-32)) - mu )

    return optim.brentq(lam_eq, -100, 100, args=(mu, b), disp=True)