256MBごとに切り替わるということで分りました。
内部で全体のバイト数を、ビット数に変換する処理(8倍する)ところで、桁上がりの処理に誤りがありました。
(標準の整数長より長いので、単なる数式ではなく、桁上がり等考慮したロジックで求めています。実際には、8回足すことで求めています。2つの値の足し算であれば、桁上がりするのは1しかないので処理が簡単になる。)
1:0000000032000000 ←正しい。
2:0000000064000000 ←正しい。
3:0000000196000000 ←桁上がりしているが、本当はまだ。なので値も正しくない。
4:00000001C8000000 ←値が正しくない。
5:00000001FA000000 ←値が正しくない。
6:000000012C000000 ←本来の桁上がりするタイミング。値も正しい。
7:000000015E000000 ←ここの値も正しい。
8:0000000290000000 ←2回目の桁上がりしているが、本当は未だ。また値が正しくない。
本当の答えは、0000000190000000。
上記のように、正しくなったり、不正になったりを繰り返します。これの周期が256MBとなるようです。
原因が絞り込めたので、折を見て修正します。