public FormattingResult roundDistanceMilesFeet(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.15) {
            /*
             * use miles with one decimal
             * 
             * NOTE: different limit from when we're using yards.
             * 0.15 miles = 800 ft (approx)
             */
            
            int decimiles = (int) WFMath.round(10*miles);
            sb.append(decimiles / 10);
            sb.append(m_config.getDecimalMarker());
            sb.append(decimiles % 10);
            longdistance = true;
        } else {
            // use single feet.
            int feet = (int) (absmeters * METERS_TO_FEET);

            if (feet >= 600) {
                // round to 50 ft
                sb.append(WFMath.roundTo(feet, 50));
            } else if (feet >= 400) {
                // round to 25 feet
                sb.append(WFMath.roundTo(feet, 25));
            } else if (feet >= 200) {
                // round to 10 feet
                sb.append(WFMath.roundTo(feet, 10));
            } else if (feet >= 100) {
                // round to 5 feet
                sb.append(WFMath.roundTo(feet, 5));
            } else {
                // output number of feet
                sb.append(feet);
            }
        }

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

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