+ lower_limit = floor (2 * min / bin_width) - 1;
+ upper_limit = floor (2 * max / bin_width) + 1;
+
+ /* The range must be an even number of half bin_widths */
+ if ( (int)(upper_limit - lower_limit) % 2)
+ {
+ /* Extend the range at the end which gives the least unused space */
+ if (remainder (min, bin_width / 2.0) > remainder (max, bin_width / 2.0))
+ lower_limit --;
+ else
+ upper_limit ++;
+ }