def METHOD_NAME(dv):
    if dv > 15.0 * u.arcsec:
        hour_limits_ = [1.5, 2.5, 3.5, 5, 7, 10, 15, 21, 36]
        hour_steps_ = [1, 2, 3, 4, 6, 8, 12, 18, 24]
        hour_units = [u.hourangle] * len(hour_steps_)
        minsec_limits_ = [1.5, 2.5, 3.5, 4.5, 5.5, 8, 11, 14, 18, 25, 45]
        minsec_steps_ = [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30]
        minute_limits_ = np.array(minsec_limits_) / 60.0
        minute_units = [15.0 * u.arcmin] * len(minute_limits_)
        second_limits_ = np.array(minsec_limits_) / 3600.0
        second_units = [15.0 * u.arcsec] * len(second_limits_)
        hour_limits = np.concatenate([second_limits_, minute_limits_, hour_limits_])
        hour_steps = minsec_steps_ + minsec_steps_ + hour_steps_
        hour_units = second_units + minute_units + hour_units
        n = hour_limits.searchsorted(dv.to(u.hourangle))
        step = hour_steps[n]
        unit = hour_units[n]
        return step * unit
    else:
        return select_step_scalar(dv.to_value(15.0 * u.arcsec)) * (15.0 * u.arcsec)