threshold = 0.0001
maximum_iterations = 100000

keep_going = True
iterations = 0
while (keep_going):
    rate_change = step_size * revenue_derivative(current_rate)
    current_rate = current_rate + rate_change

    if (abs(rate_change) < threshold):
        keep_going = False

    if (iterations >= maximum_iterations):
        keep_going = False

    iterations = iterations+1
