Thanks for your fast reply. I ended replying to my own message and din't notice. I give here some more details about the calculations as you sugested.
To limit the possibilities I have now switched entirely to windows (xp) and started doing some runs on an Intel processor (Pentium IV, 1.5GHz) with three copilers: compaq 6.6, ifl (7.0)and Lahey-Fujitsu 95.
I had the same problem in linux with PGI and Intel 8.0 (ifort) compilers.
The results are reproductible in each compiler individually (but different in all three) and they just start seriously diverging from one another after a number of iterations (say 1000).
I follow up some of the variables to try to see if there is any abrupt change, but this turns out to be very smooth.
For example at start I have for step 0:
compaq: 0 3.180673278510795E-002
intel: 0 3.18067327851079D-002
After 500 iterations for the same variable:
Intel: 500 -0.364960208039116
This difference then keeps increasing.
No compiler gives any warnings or errors. The intel compiler warned about tab characters and intrinsic functions (e.g. DFLOAT) that are extensions to f90. Substitution of these do not change the results however.
The code exists in a single file (no INCLUDE). It uses COMMON BLOCKS and EQUIVALENCE statements to pass variables through different SUBROUTINES.
I have been cutting the program into smaller and smaller pieces to reduce it as much as possible to its chorus and see if I spot the error, but this is tedious and the results don't seem to change. I even passed some of the SUBROUTINES into the MAIN program unit.
Perhaps you can suggest me any other way of searching for the error. I also tryed different compiling options without much success in understanding what can be wrong.
Thanks a lot for your help.