The maxTorque property of a BodyGyro instance doesn’t seem to work properly. It does somewhat work if the values are (x, y, x), so for example the default values (400000, 0, 400000) do what is expected (allow free rotation, without force from the BodyGyro object, around the object-y-axis). The value (0, 400000, 0) also works as expected.
However, setting the value to e.g. (400000, 400000, 0) does not allow free rotation around the object-z-axis and just applies force on any axis to make the object rotate to the set cframe. Setting it to (400000, 400000, 400000) or (0, 400000, 400000) seems to have exactly the same effect.
Besides, maxTorque doesn’t actually seem to define the maximum torque… Setting it to (0.0001, 0.0001, 0.0001) with P set to 1000000 seems to only take P into account, not being restricted to the maxTorque values. I don’t think this is intended too.
Would like to see this fixed, even though you could practically work around the first issue by rotating the part and the BodyGyro its cframe orientation.