The BIS_fnc_moduleRespawnPosition uses the position command to get the position of the module object, which as we know is AGLS. 😬
This causes problem when you want to put a respawn position on buildings, carriers, etc. and the object ends up at the terrain/water level.
Please change it to AGL.
Line 49:
_pos = position _logic;
Change to:
_pos = ASLtoAGL getPosWorld _logic
Edit: BIS_fnc_addRespawnPosition does it too when passing object as respawn pos, but I didn't look too deep to find where it gets the pos.