Where have I gone wrong with my int maths?

would (gyro_z*duration)/1000000 be exectuted as a float even though gyro_z is an int?

No, but (gyro_z*duration)/1000000.0 would be.