'internal calculation for one fit iteration
BUG: I think this does not improve, what is supposed to improve
offset doesn\'t seem to be used, neither an old alpha
The smoothers keep coef/params from previous iteration'

def next(self):

    _results = self.results
    Y = self.results.Y
    mu = _results.predict(self.exog)
    offset = np.zeros(self.exog.shape[1], np.float64)
    alpha = ((Y * self.weights).sum() / self.weights.sum())
    for i in range(self.exog.shape[1]):
        tmp = self.smoothers[i].predict()
        bad = np.isnan((((Y - alpha) - mu) + tmp)).any()
        if bad:
            print (Y, alpha, mu, tmp)
            raise ValueError('nan    encountered')
        self.smoothers[i].smooth(((Y - mu) + tmp), weights=self.weights)
        tmp2 = self.smoothers[i].predict()
        self.results.offset[i] = ((- (tmp2 * self.weights).sum()) / self.weights.sum())
        if DEBUG:
            print self.smoothers[i].params
        mu += (tmp2 - tmp)
    offset = self.results.offset
    return Results(Y, alpha, self.exog, self.smoothers, self.family, offset)
