Thanks Pete. Sounds encouraging. Maybe the available gain range in normal (rate) mode is a little too low if you're able to use 75% gain with a slow servo. Perhaps I should double the available range for version 3?
I've been on quite a journey, so far.
I inspected all my spare and crashed heli bits and pieces and found an old Trex 450 SE (with a flybar) that had suffered the usual crash damage - bent boom, flybar, mainshaft, feathering spindle, broken blades, stripped main gear, but otherwise looked intact. It must be at least five years since I crashed it and put it to one side. I don't remember why it crashed, but it was probably pilot error.

I found I had all the spares necessary to fix it (except for the tail boom), so spent yesterday fixing it up (I made a mandrel and straightened the boom which was only gently bent - not cracked or creased).
So today I was going to test fly it, and then make up a turntable stand for it to sit on (with blades removed) for gyro testing.
But it last flew on an old JR PCM10X transmitter, with a Spektrum module fitted, so I thought I'd transfer the settings over to one of my current transmitters. I got the 10X down from the loft - the battery died long ago, and it had one of those special (expensive) battery-holder come charger adapter things instead of a regular battery - I'd just removed the the old cells to prevent corrosion, before putting it away. I got the battery case apart, figured out the connections, and powered the transmitter from a bench power supply.
The "DSC" output on the 10X is weird - it's not quite a trainer port as it can't be used as a trainer master - only a slave - and is really designed for transferring model memories to and from a PC or another transmitter, or setting up a model on the bench without transmitting any RF, via a special interface to the servos. It does give out a PPM signal, but it's capacitively coupled and at too low a level to work with my PPM tester. So I built an OpAmp amplifier (LM358) to boost up the signal to the point where my PPM tester could read the signal.
Now I've jotted down all the readings and am about to set up my Taranis to duplicate them - then I can test fly the heli!
I found various main shafts, main shaft bearings, frames, and main gears in my box of bits which I think will serve as a good basis for making a turntable. I'm intending to design and 3D-print a suitable 'tray' that fastens to the heli skids and mounts to the main bearings - I can then clamp the main shaft in a workmate table, and I'll have a free-spinning heli stand for tests.
That's the plan, anyhow.
While I've been tinkering with helis, I've been thinking about the software mods. I plan to base the heading hold feedback, not on the current difference between the actual heading and the demanded heading, but rather on the difference between the demanded heading and the predicted heading a third of a second from now - and that predicted heading is based on the current instantaneous heading and the current rotation rate. I think that should damp the response. The "third of a second" figure comes from the fact that even slow "cooking" servos, like a Futaba 148, are supposed to give a sixty degree in 0.28s response time - but the figure will be editable in config.h if someone wants to optimize it for a modern fast digital servo.
I also plan to add an extra configuration option which will be the demanded pirouette rate, with full rudder input deflection, in heading hold mode. I'm thinking the default for this should be about 720 degrees per second for rapid "540 style" stall turns, but some people might want faster. You can always go slower, of course, just by limiting the end points of your transmitter's rudder channel.
I'm going flying the next couple of days too, so it will likely be at least Thursday before I have the new program tested.