I know a lot of the groups need to have a rect set or that will happen. Have you tried SetRect?
The units will go there when they have nothing to do. Like if a Convec is waiting for a kit to be built at the SF, or if cargo trucks can't return to the smelter because you can't hold anymore ore. In that case, they'll go to where the rect for that group is set, and wait there. By default, it's probably (0, 0, 0, 0). Hence why they would move to the top left corner.
Also, the rect coordinates aren't inclusive of all edges. So something like (99, 99, 99, 99) will have no interior. I believe it includes the top and left sides of the rect, and excludes the bottom and right sides. You also want to make sure there is room for all the units in that rect, or funny things may happen. When I did that before, they all just fought over the same space and kept pushing each other out of the way.
So, make the rect bigger, and put it somewhere useful where you want units to hang out. And try using SetRect on the group containing the units if no other way to specify a rect works.