I would like to use FM package capabilities for the study of a problem in number theory. I installed the package, compiled libraries, and ran the two test suites supplied, all without any problems.
I wrote test.f:
   use fmzm
   TYPE (IM), SAVE :: n
   n = 0
   WRITE(*,*) n
   end
and compiled using
gfortran -c -O3 -Wall test.f
gfortran fmsave.o fm.o fmzm90.o test.o -o test
which returned no error or warning. But got disappointed by discovering the output:
./test
200000
The number 200000 appears to be a memory location for the variable n. I experimented a little, and if I change n to complex type (ZM) it outputs 200000, 199999. Similarly if I declare and initialize two variable instead of one.
If I change TYPE (IM), SAVE :: n to INTEGER n, and compile exactly as above, I get the expected 0 as output.
If I replace the code by
   n = 0
   do
   n=n+1
   if (n < 10) WRITE(*,*) n
   end do
then the output 200000 repeats 9 times and then stops. So it is the WRITE function which only finds the location and not the value. PRINT does the same.