fixed implicit integer precision loss