ありがとうございます。
結局、numeric_limitsでオーバーフロ-や丸め誤差が生じたときに
強引に戻すやり方にしました。
しかし、結局はどこでオーバーフローが生じているのか分からずじまいでした。
難しいものです。