Bugs in g95 reported but not yet fixed as at 20 Aug 2013 1. Real(10) is available in some Linux systems but g95 treats its Infinity as NaN. Test program that prints NaN but ought to print Inf or Infinity: program testinf10 implicit none real(10) inf10 character(3):: cinf = 'Inf' read(cinf,*) inf10 print *,inf10 end program testinf10 2. Real(10) scalar constants seem to occupy less storage space than real(10) scalar variables. The bug may be in transfer. Test program: program testtransfer10 implicit none real(10),parameter:: const = 0 real(10) :: variable = const integer :: i(1) print *,'transfer(variable, i) =',transfer(variable,i) print *,'transfer(const , i) =',transfer(const ,i) end program testtransfer10 3. As F format output requires at least one digit as well as . this three-line program should print * but it actually prints a decimal point: program testf10 print "(F1.0)", 0.01 end program testf10 4. If you use SS in an output format the optional + sign is supposed not to be written, but g95 still writes it if the real value is +Inf (unless it's kind 10: see bug 1 above). Test program: program testplusinf implicit none character(4):: cinf = '+Inf' real rinf read(cinf,*) rinf print "(SS,A,F0.0)",'Inf with SS format = ',rinf end program testplusinf 5. This program is supposed to convert an integer array to quadruple precision real. On a NetBSD system it prints 1. 3. as it should, but on an x86_64 system (on which g95 allows quad precision) it crashes with a run-time segmentation fault: program testquad print *,real((/1,3/),selected_real_kind(30)) end program testquad Bugs found later: 6. The arrays a,b should be the same when printed. RHS of an assignment statement should be completely evaluated before it's substituted into LHS. program arraybug integer:: a(2) = (/1,2/),b(2) b = (/a(2),a(1)+a(2)/) a = (/a(2),a(1)+a(2)/) print *,a,'should be the same as' print *,b,merge('and is. ','but is not.',maxval(abs(a-b))==0) end program arraybug