Regarding the z values, it’s not really a bug.
In Lua, numbers are represented by double precision floating point values (a.k.a. doubles)
Our vector3 is based on Sony’s vector lib, which uses single precision floating point values (a.k.a floats)
Doubles are 64bits, and floats are 32 bits.
Neither doubles or floats can represent all real numbers.
Since floats are much smaller (32 bits smaller!), they will lose precision much earlier than doubles.
Also, in some cases, you have to account for the actual print out of the number (which might not be the same)
Here is a C++ example, and there is a ton of material regarding floating point precision/accuracy and robustness etc out there.
As for why your object disappears, I think there’s something else going on.
EDIT: (Updated the c++ example and result, since the addition result was buggy)
Also, I’d like to mention that this is why you never want to compare floating point numbers using the == operatior!