Ruby 'Range.last' no da el último valor. ¿Por qué?

Cuando uso la notación de punto triple en un objeto de rango rubí, obtengo esto:

(0...5).each{|n| p n}
0
1
2
3
4

Cuando uso el método 'último' obtengo:

(0...5).last
 => 5 

Habría esperado 4

¿Esto es un error? ¿O hay algo que no entiendo sobre el concepto de un objeto Range?

Respuestas a la pregunta(2)

Su respuesta a la pregunta