def fit_mle(self, data, b=None):
        """%(super)s
b : float
    The upper bound of the distribution. If None, fixed at sum(data)
        """

        data = np.array(data)
        length = len(data)

        if not b:
            b = np.sum(data)

        return _trunc_logser_solver(length, b), b