The design philosophy of the composite integration is “last update wins”.
The idea is, the most recent update is considered the best. Its goal is not to make up for bad inputs, but to use multiple inputs to “fill in the gaps” between each input’s updates.
E.g., I use Life360 & Google Maps (on the same phone.) Surprisingly, they don’t update at the same rate, or at the same time. It’s not uncommon to get a few updates from one, then while it’s not updating, to get some updates from the other. When they get put together, the result is a tracker that updates more frequently (and, hence, is less “stale”.)
Regarding binary sensors, by default, their updates are only used when they change to home. If you want them to use all their state changes, there is an option for that. But, of course, in your scenario, that’s not an issue.
Regarding GPS based inputs, the integration doesn’t care what their “state” is. I.e., it doesn’t care if they are home, in some other zone or not in any. It only uses the GPS inputs (latitude, longitude & GPS accuracy.) The “system” decides where the tracker is based on the coordinates.
So, again, it really doesn’t try to “make up” for bad inputs. The only real exception to that (at least in your scenario) is the “max accuracy” setting. If a GPS based input updates, but its GPS accuracy is more than the max accuracy setting, the update is ignored. (Note that a higher accuracy number is misleading. It actually means the location is less accurate. That’s because it defines the radius of a circle such that the device is somewhere within that circle. So, the higher the reported accuracy, the bigger the circle wherein the device is located, and hence, the less accurate the location is known.)
Therefore, you should monitor the GPS accuracy attribute of the input to see what it usually is, and if when it reports you’re not home when you are, its value is significantly higher. Then you can set a max accuracy threshold to try and reject those bad readings.