Correct Fix, Java causes incorrect results if a long is divided by an integer ( 64bits/32bits ) to make sure the result is correct we need to make sure the division is ( long/long ) 
So I have put an L behind every static value used + I now use / ( 1024L * 1024L ), which is a small optimization taking in mind that division takes more time than multiplecation.