The default PositionMidLabel does some math, looks at the setting of MidLabelCentered and then calls SetSpotLocation on the label. It doesn't do anything to position the link.
protected virtual void PositionMidLabel( GoObject lab, PointF a, PointF b )
lab (GoObject) The label object. a (PointF) The start point of the middle segment of the link. b (PointF) The end point of the middle segment of the link.
It gives to the two end points (a, b) of the middle segment, and the MidLabel object.
It's a simple matter of doing the math to meet your needs and setting the Position of the "lab".