The issue is that PIT_ChangeSector doesn't distinguish between sector/FOF ceilings and fellow objects that the object might be "crushed" against. For objects that are "crushable", this is fine - pushables can crush players, for example. The problem is with "non-crushable" objects, i.e. pushables. A pushable should only stop the floor/ceiling movement if it's being crushed against something immovable, i.e. real ceilings and NOT fellow objects. The function needs a special case for MT_PUSHABLE types, where instead of checking ceilingz only actual ceilings should be taken into account. I don't know if there's an elegant way to do this, but if all else fails, check the sector ceiling and then scan all FOFs in the sector.