While mash temp does dictate the amount of fermentable sugars it doesn't dictate the amount of sugars the yeast can eat. Different yeast attenuate more than others. Belgian yeast can ferment up to 85% and Brett can go even higher. British yeast often leave the beer maltier and attenuate much less.
I'll dealing with this exact problem right now. Brewed a milk Stout with 1.5 lbs lactose. Yes, I know this isn't fermentable but should only add 4 or 5 points to the final gravity in a 10 gallon batch
SG - 1.069
FG - 1.027
EFG - 1.021
I have a HERMS system and I know I was exactly at 154. I actually got 4 points more than expected ... yes!
Pitched Omega Yeast British VII after a 3l starter. I (Should) have had plenty of yeast... It's expected attenuation is 67% - 71%. But, who knows. I'm not a microbiologist and don't have correct yeast counts.
My ferm temp got up to 75° in a 67° basement. Yikes! They might have decided to quit due to temp...
I'm at 14 days and haven't seen a gravity drop in a week. So, instead of trying all sorts of enzymes, or adding sugar to dry it out, I'm going to try a higher attentuating yeast.
Omega West Coast Ale is 73% - 80%. More than the British VII.
I'm going to do a 1l starter and pitch at high kreusen. I'm hoping this will be enough to let the the yeast finish the job. Plus, most of the fermentation is done so I shouldn't get any yeast character from the new yeast.
I'll post an update in a few days!