--- irange.hpp 2011-05-16 12:15:51 +0900 +++ irange.hpp.new 2011-05-16 12:15:58 +0900 @@ -216,9 +216,11 @@ typedef typename range_detail::integer_iterator_with_step iterator_t; - const std::ptrdiff_t last_step - = (static_cast(last) - static_cast(first)) - / (static_cast(step_size)); + const std::ptrdiff_t last_step = + (last==first) + ? 0 + : (static_cast(last) - static_cast(first) - 1) + / (static_cast(step_size)) + 1; return strided_integer_range( iterator_t(first, 0, step_size),