Not sure about this, but I have the feeling that the following is happening.
Internally time is represented by a number with 15 decimals. Apparently sometimes these numbers (like with 22:00 hrs) are rounded to 15 decimals, but somehow the remaining decimals are still there.
Now 22:00 hrs is represented by the 0,916666666666667 which (because ending with 67) looks like being rounded upwards. So actually smaller than represented.
What you then get is 0,916666666666667 (22:00) minus 0,770833333333333 (18:30) minus 0,145833333333333 (3:30) should leave 0 but in fact leaves -0,0000000000000000832667268468867. Being the difference between the representation of 22:00 hrs and it's actual value.
Solution is pretty simple:
ROUND(IF(G14="HOL","",IF(G14="BH","",H14-G14-'Hours Matrix'!$D2-IF(AND(G14<0.35416667,H14>0.60416667),1/24,0))),15)
Bookmarks