Bem, a resposta simples é, eu acho, que a sua implementação find está seguindo o padrão POSIX / SuS, que diz que deve se comportar dessa maneira. Citando SUSv4 / IEEE Std 1003.1, edição 2013, "localizar" :
-mtime n
The primary shall evaluate as true if the file modification time subtracted
from the initialization time, divided by 86400 (with any remainder discarded), is n.
(Em outro lugar nesse documento, explica que n
pode realmente ser +n
e o significado disso como "maior que").
Quanto ao motivo pelo qual a norma diz que deve se comportar dessa maneira - bem, eu acho que no passado um programador era preguiçoso ou não pensava nisso, e apenas escrevia o código C (current_time - file_time) / 86400
. C aritmética inteira descarta o restante. Os scripts começaram dependendo desse comportamento e, portanto, foram padronizados.
O comportamento da especificação também seria portátil para um sistema hipotético que armazenava apenas uma data de modificação (não a hora). Não sei se tal sistema existiu.