public FormattingResult roundDistanceMilesYards(int meters) {
        int absmeters = Math.abs(meters);
        boolean longdistance = false;
        StringBuffer sb = new StringBuffer(15); // "-2000000000"
        float miles = absmeters * METERS_TO_MILES;

        if (miles > 10) {
            // use whole miles
            sb.append((int) WFMath.round(miles));
            longdistance = true;
        } else if (miles > 0.5) {
            /*
             * use miles with one decimal
             * 
             * NOTE: different limit from when we're using feet.
             * 0.5 miles = 880 yards = 2640 ft
             */

            int decimiles = (int) WFMath.round(10*miles);
            sb.append(decimiles / 10);
            sb.append(m_config.getDecimalMarker());
            sb.append(decimiles % 10);
            longdistance = true;
        } else {
            int yards = (int) (absmeters * METERS_TO_YARDS);

            if (yards >= 200) {
                // round to 10 yards
                sb.append(WFMath.roundTo(yards, 10));
            } else if (yards >= 50) {
                // round to 5 yards
                sb.append(WFMath.roundTo(yards, 5));
            } else {
                // output number of yards
                sb.append(yards);
            }
        }

        if (meters < 0) {
            sb.insert(0, '-');
        }

        return FormattingResult.createForDistance(m_config,
                                                  sb.toString(),
                                                  longdistance);
    }