Other than personal constraint, what you could do is maintain a permanent hipfire cm/360°. Make use of custom resolutions to render the game into a specific portion of the screen, whilst having blackness where the missing fov would be. This way you can achieve a constant cm/360°.
Let's say we want 106.26° x 73.74° fullscreen (1920 x 1080 pixels). We have a game that is limited at 103°. We know 106.26° is 1920 pixels. We need to find how many pixels is 103°. From there, we can scale the result by 9/16 to find the vertical pixels, or use the full 1080 pixels if the game can fill that in.
Example formula:
1920 * (1 * tan(103 * pi/360))/(4/3 * tan(90 * pi/360)) = 1810
1810 * 9/16 = 1018
103 degrees = 1810 pixels. At 1810x1018 resolution, the game will effectively have the same focal length as 106.26° x 73.74° game at 1920x1080, and the same cm/360°.
(360 * atan(1018/1810 * tan(103 * pi/360)))/pi = 70.526°
We will have 103°x70.526° rendered, the rest is black.
Test if the game supports 1810x1080, or 1920x1018 whilst maintaining the focal length and without stretching. You could potentially have black bars on one axis.
Just think of it like your monitor grows and shrinks to change the field of view, with a max limit defined by the physical size of the monitor, instead of relying on the game zooming in and out to change the fov.