Thank you my man! @Euler-37

Yes I know. I have managed according to @certik suggestion, even simpler version here, 30 lines.

He suggested 10 lines, that is a little bit too tough. 10 lines there is almost nothing I can do

```
module tests
implicit none
contains
subroutine test01
integer, parameter :: n = 10, np = 10
integer :: i, itot, istart, istep, j, k
real :: x(0:n), xout(5,np)
itot = n
istart = itot/5
istep = istart
do j = 1, np
i = 0
x(i) = 20.0
do i = 1, n
call rk4_ti_step_mod3 ( x(i-1), x(i) ) ! check n=10 bug.
!write ( *, '(2x,i8,2x,f14.6,2x,g14.6)' ) i, x(i-1), x(i)
end do
!write (6,'(''x = '',t20, 5(f15.7,1x))') x(istart:itot:istep)
xout(1:5:1,j) = x(istart:itot:istep)
enddo
write (6,'(5(f15.7,1x))') xout
return
end subroutine test01
subroutine rk4_ti_step_mod3 ( x, xstar )
real :: x, xstar
xstar = x
!write(6,*) 'x', x
xstar = xstar + x
return
end subroutine rk4_ti_step_mod3
end module tests
program main
use tests
implicit none
call test01
stop ('Program end normally.')
end program main
```

In this above version, there is just one module called tests.

However if I move the subroutines to the main program. That is, use no module, is bug is gone. I am a little bit confused. Please see below, this code does not have problem.

```
program main
implicit none
call test01
stop ('Program end normally.')
contains
subroutine test01
integer, parameter :: n = 10, np = 10
integer :: i, itot, istart, istep, j, k
real :: x(0:n), xout(5,np)
itot = n
istart = itot/5
istep = istart
do j = 1, np
i = 0
x(i) = 20.0
do i = 1, n
call rk4_ti_step_mod3 ( x(i-1), x(i) ) ! check n=10 bug.
!write ( *, '(2x,i8,2x,f14.6,2x,g14.6)' ) i, x(i-1), x(i)
end do
!write (6,'(''x = '',t20, 5(f15.7,1x))') x(istart:itot:istep)
xout(1:5:1,j) = x(istart:itot:istep)
enddo
write (6,'(5(f15.7,1x))') xout
return
end subroutine test01
subroutine rk4_ti_step_mod3 ( x, xstar )
real :: x, xstar
xstar = x
!write(6,*) 'x', x
xstar = xstar + x
return
end subroutine rk4_ti_step_mod3
end program main
```