See, that is what I thought, but comparing float4(0.25, 0, 0, 1) and (float4(frac(-0.75), 0, 0, 1) as a pixel shader output they appear the same, whilst float4(0.75, 0, 0, 1) appears to be noticably brighter.
I'll use the reference device to make sure it's not my hardware when I get time.
Edit: I've just thought about this (I should do this more often) and frac(x) is defined as follows:
Therefore, for x = -0.75:
floor(x) = -1frac(x) = -0.75 - (-1)frac(x) = 0.25
Just thought I would post that for other people's reference.
Thanks for the help Jason.