def newguessbydecay(func, a, b, *args, **kwargs):
    """This function returns new guesses for func that will
    hopefully have the opposite sign of a0 and b0. This
    module assumes a decaying function.
    
    Parameters
    ----------
    func : callable
        A one-dimensional continuous function to be
        evaluated for its root.
    a : float
        Low initial guess. Should result in the opposite
        sign of a0 after evaluation.
    b : float
        High initial guess. Should result in the opposite
        sign of t0 after evaluation.
    args : list
        Arguments for func.
    kwargs : dict
        Key word arguments for func.
        
    Returns
    -------
    c : float
        New guess.
    """
    # Evaluate func at original guesses
    fa = func(a, *args, **kwargs)
    fb = func(b, *args, **kwargs)
    slope = (fb - fa) / (b - a)

    # If the current evaluations are negative, make y positive
    if fa < 0:
        # If slope is negative, positive value on left side
        if slope < 0:
            y = abs(fb)
        # If slope is positive, positive value on right side
        else:
            y = 2 * abs(fb)
    # If they're positive, make y negative
    else:
        # If slope is negative, negative value on right side
        if slope < 0:
            y = -2 * abs(fb)
        # If slope is positive, negative value on left side
        else:
            y = -1 * abs(fb)
    c = (y - fa) / slope + a
    return c