def calculate_years_until_amount(starting_amount, requested_amount, interest_rate, stipend_rate):
    """
    If I want X in the bank, how long will it take?
    :param starting_amount: The amount of money the bank has to start with.
    :type starting_amount: double
    :param requested_amount: The amount requested in the bank.
    :type requested_amount: double
    :param interest_rate: The rate that interest is being added into the bank.
    :type interest_rate: float
    :param stipend_rate: The amount taken out each year for a stipend.
    :type stipend_rate: float
    :return: The amount of years it will take to accrue, the yearly stipend amounts.
    """

    # Money is not gained. Can be calculated, but not here.
    if stipend_rate >= interest_rate:
        return -1, -1

    # We start on the first year.
    years = 1
    current_amount = starting_amount
    stipend = [0]
    while current_amount < requested_amount:
        current_amount += (current_amount * interest_rate)

        # We take the stipend out after adding new interest.
        new_stipend_amount = current_amount * stipend_rate
        current_amount -= new_stipend_amount
        stipend.append(new_stipend_amount)
        years += 1

    # If we want to calculate stipend, return the full stipend sheet.
    return years, stipend if stipend_rate > 0 else [0]