def keplerian_sheared_field_locations(ax, kbos, date, ras, decs, names, elongation=False, plot=False):
    """
    Shift fields from the discovery set to the requested date by the average motion of L7 kbos in the discovery field.
    :param ras:
    :param decs:
    :param plot:
    :param ax:
    :param kbos: precomputed at the discovery date for that block. e.g. Oct new moon for 13B
    :param date:
    :param names:
    :param elongation:
    """
    seps = {'dra': 0., 'ddec': 0.}
    for kbo in kbos:
        ra = kbo.ra
        dec = kbo.dec
        kbo.compute(date)
        seps['dra'] += kbo.ra - ra
        seps['ddec'] += kbo.dec - dec

    seps['dra'] /= float(len(kbos))
    seps['ddec'] /= float(len(kbos))

    print date, seps, len(kbos)

    for idx in range(len(ras)):
        name = names[idx]
        ra = ras[idx] + seps['dra']
        dec = decs[idx] + seps['ddec']
        if plot:
            ax.add_artist(Rectangle(xy=(math.degrees(ra) - camera_dimen / 2.0, math.degrees(dec) - camera_dimen / 2.0),
                                    height=camera_dimen,
                                    width=camera_dimen,
                                    edgecolor='b',
                                    facecolor='b',
                                    lw=0.5, fill=True, alpha=0.2))
        if elongation:
            # For each field centre, plot the elongation onto the field at that date.
            elong = field_elongation(ephem.degrees(ra), ephem.degrees(dec), date)
            ax.annotate(name, (math.degrees(ra) + camera_dimen / 2., math.degrees(dec)), size=3)
            ax.annotate("%0.1f" % elong, (math.degrees(ra) + camera_dimen / 4., math.degrees(dec) - camera_dimen / 4.),
                        size=5)

    return ax