Do you get the 'same' problem meaning that it fails on the second run?
Back to the original code: if you put the stat=nStat parameter in the allocate and (especially) deallocate calls, what codes did you get in the first run, the second?
I assume you need to use the allocate statement because the size varies from run to run, since the bandwidth usually varies with different problems. If you have time, you can try the object time dimensioning I suggest in my previous post using a simple subroutine. Unfortunately I do not have access to F90 to test it before. If it works, then you can try incorporating the idea in your program. It is supposed to automatically allocate and deallocate, but the size parameters must be formal parameters.