Consider a small non-wrapping:
and a bigger, wrapping rectangle (which contains the former rectangle entirely):
Uniting the two (using united() or the | operator) results in a rectangle with top left coordinate (30; 160) and bottom right coordinate (-30; -40). The left value is obviously wrong, the resulting rectangle should be equal to the bigger wrapping rectangle.
You can quickly confirm the bug by adding this case to the relevant unit test data collection (tst_QGeoRectangle::unite_data).