プログラムのバグ?コンパイラのバグ?(2)

続いて、もう一つ・・・。
ファイルのI/Oですが、まず、あるプログラムで、次のように書き出したとします。

dimension numb(20) , idat(20,10)
・
write(nun) mxdt, ( num(i), i = 1 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m+3) ), m = 1 , 3 )

上のステートメントで作ったファイルを別プログラムで次のように読み込みます。

dimension numb(20) , idat(20,10)
・
read(nun) mxdt, ( num(i), i = 1 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m+3) ), m = 1 , 3 )

すると、変数idatには前プログラムで書き込んだ値と異なる値が出力されたのには驚きました。
どう、考えてもプログラム自体、おかしいところはないと思うのですが?