Con la poca precisión del real, lo mas seguro es que valor1 no sea nueve, sino en realidad 8.999999999996 o algo así. Evidentemente, el trunc de eso es 8 y no 9. Pero este no es un problema de delphi, es un problema de las computadoras y los formatos para almacenar números.
Como ya te dijeron, podes obtener la parte fraccionaria directamente, o usar números con mas precisión, como los Double. Aún con estos, el problema persistirá, solo que ocurrirá menos veces (aquellas para las que la precisión del número resulte insuficiente para la operación que realizas y el resultado que queres ver).
Hasta luego.