To get the .SimPosition of our seated agent, we must add the local offset position of the avatar to the position of the prim in the simulator. Simply adding these two values does not take into account a rotated seat prim, in which case we need to transform the avatar's offset vector by the rotation of the parent prim.
ie:
parent.Position + relativePosition;
becomes:
parent.Position + Vector3.Transform(relativePosition, Matrix4.CreateFromQuaternion(parent.Rotation));