def ewma_crossovers(dataframe_name):
    """Creates up and down signals for exponential weighted moving averages
    Args:
        dataframe_name (df): Dataframe containing ewma fast and slow indicator data,
    Returns:
        A dataframe of:
            original data passed to function,
            ewma_cross_up (flt): Signals column (1.0 = True, 0.0 = False),
            ewma_cross_down (flt): Signals column (-1.0 = True, 0.0 = False)
    """

    # Create signal for crossover band (cross in the up direction)
    time_crossed_up = dataframe_name.loc[((dataframe_name['ewma_fast'] > dataframe_name['ewma_slow']) & (dataframe_name['ewma_fast'].shift(1) < dataframe_name['ewma_slow'].shift(1))), :].index
    dataframe_name['ewma_cross_up'] = 0.0
    dataframe_name.loc[time_crossed_up, 'ewma_cross_up'] = 1.0

    # Create signal for crossover band (cross in the down direction)
    time_crossed_down = dataframe_name.loc[((dataframe_name['ewma_fast'] < dataframe_name['ewma_slow']) & (dataframe_name['ewma_fast'].shift(1) > dataframe_name['ewma_slow'].shift(1))), :].index
    dataframe_name['ewma_cross_down'] = 0.0
    dataframe_name.loc[time_crossed_down, 'ewma_cross_down'] = -1.0

    # Create the crossover combined signal (cross up and down directions)
    dataframe_name['ewma_crossover_signal'] = dataframe_name['ewma_cross_up'] + dataframe_name['ewma_cross_down']

    # Drop cross up and down columns to clean up dataframe
    dataframe_name.drop(columns=['ewma_cross_up', 'ewma_cross_down'], inplace=True)

    return dataframe_name