def GANNPR(df, price='Close'):
    """
    W. D. Gann Price Retracements
    Returns: dict of lists of floats = jhta.GANNPR(df, price='Close')
    """
    gannpr_dict = {'1x8': [], '-1x8': [], '1x4': [], '-1x4': [], '1x2': [],
        '-1x2': [], '1x1': [], '-1x1': [], '2x1': [], '-2x1': [], '4x1': [],
        '-4x1': [], '8x1': [], '-8x1': []}
    for i, price in enumerate(df[price]):
        gannpr_dict['1x8'].append(price + price / 8)
        gannpr_dict['-1x8'].append(price - price / 8)
        gannpr_dict['1x4'].append(price + price / 8 * 2)
        gannpr_dict['-1x4'].append(price - price / 8 * 2)
        gannpr_dict['1x2'].append(price + price / 8 * 3)
        gannpr_dict['-1x2'].append(price - price / 8 * 3)
        gannpr_dict['1x1'].append(price + price / 8 * 4)
        gannpr_dict['-1x1'].append(price - price / 8 * 4)
        gannpr_dict['2x1'].append(price + price / 8 * 5)
        gannpr_dict['-2x1'].append(price - price / 8 * 5)
        gannpr_dict['4x1'].append(price + price / 8 * 6)
        gannpr_dict['-4x1'].append(price - price / 8 * 6)
        gannpr_dict['8x1'].append(price + price / 8 * 7)
        gannpr_dict['-8x1'].append(price - price / 8 * 7)
    return gannpr_dict
