Parece que tu resultado ocurre cuando redondeas para abajo término a término, ahí perdés un 0.5 en el segundo término, y otro 0.5 en el tercer término. El problema puede surgir de acumular cada término del producto en una variable tipo int, se me ocurre, pero ponele el ojo por ahí.