The zoom button swaps the current and an alternate position maintained by Intuition. You can use the WA_Zoom argument to initialize the alternate position. If you do not give WA_Zoom, the alternate position is equal to the initial one, causing the behaviour you described above.
You must not write to system structures. Especially not into fields that are not documented. They may no longer be there in future OS versions.
Bye,
Thomas