diff -Nr -u5 sander_orig/remd.F90 sander_dump/remd.F90
--- sander_orig/remd.F90	2012-12-15 19:57:56.000000000 +0100
+++ sander_dump/remd.F90	2012-12-16 20:19:51.000000000 +0100
@@ -2306,10 +2306,15 @@
    integer texchsuccess(numreps),tempsuccess(numreps)
    _REAL_ exchfrac(numreps)
 
    logical exchange
 
+   logical, save :: force_not_dumped = .true.
+   logical, save :: force_not_reduced = .true.
+   _REAL_, dimension(:), allocatable :: f_buff
+   character(80) dump_name
+
 ! ---------------------
 
    ! Initialize variables
    texchsuccess(:) = 0
 
@@ -2445,10 +2450,38 @@
    call mpi_bcast(xtemp,3*natom,mpi_double_precision,0,commsander,ierror) 
    
    call force(x,ix,ih,ipairs,xtemp,ftemp,expe,expe%vir,x(l96),&
               x(l97),x(l98),x(l99),qsetup,do_list_update)                 
 
+   if (force_not_reduced) then
+      allocate(f_buff(3*natom))
+      call MPI_Reduce(ftemp, f_buff, natom*3, MPI_DOUBLE_PRECISION, &
+                      MPI_SUM, 0, commsander, ierror)
+      force_not_reduced = .false.
+   end if
+   if (force_not_dumped) then
+      if (sanderrank==0) then
+         write(6, '(/"dumping neighbour forces"/)')
+         !write(dump_name, '("array_dump."i3.3)') myrepnum
+         !open(95, file = dump_name, status = 'old', position = 'append', action = 'write')
+         write(95, '("neighbour coordinates")')
+         write(95, *) xtemp(:3*natom)
+         write(95, '("end")')
+         write(95, '("neighbour forces")')
+         write(95, *) ftemp(:3*natom)
+         write(95, '("end")')
+         write(95, '("neighbour forces after reduction")')
+         write(95, *) f_buff
+         write(95, '("end")')
+         close(95)
+         deallocate(f_buff)
+      else
+         deallocate(f_buff)
+      end if
+      force_not_dumped = .false.
+   end if
+
    ! =======================================================
    ! Step 3: calculate free energy difference, delta
    !         find out whether exchange or not
    !         This step is done by sanderrank==0
    ! 
diff -Nr -u5 sander_orig/runmd.F90 sander_dump/runmd.F90
--- sander_orig/runmd.F90	2012-12-15 19:57:56.000000000 +0100
+++ sander_dump/runmd.F90	2012-12-16 20:20:24.000000000 +0100
@@ -160,10 +160,15 @@
    _REAL_  :: fbead(3,natomCL), xbead(3,natomCL)
    integer :: mm, n
 #  endif   
    _REAL_ mpitmp(8) !Use for temporary packing of mpi messages.
    integer ist(MPI_STATUS_SIZE), partner, ierr
+
+   logical, save :: force_not_dumped = .true.
+   logical, save :: force_not_reduced = .true.
+   _REAL_, dimension(:), allocatable :: f_buff
+   character(80) dump_name
 #endif
 
 ! The following variables are needed since nstep and nstlim
 !  behave differently in a REMD run.
 ! In certain places where output is required, total_nstep and total_nstlim 
@@ -3714,10 +3719,38 @@
       mytargettemp = temp0
 !    Call force here to bring all energies up-to-date
       call force(xx,ix,ih,ipairs,x,f,ener,ener%vir,xx(l96),xx(l97),xx(l98), &
                  xx(l99),qsetup,do_list_update)
 
+      if (force_not_reduced) then
+         allocate(f_buff(3*natom))
+         call MPI_Reduce(f, f_buff, natom*3, MPI_DOUBLE_PRECISION, &
+                         MPI_SUM, 0, commsander, ierr)
+         force_not_reduced = .false.
+      end if
+      if (force_not_dumped) then
+         write(6, '(/"dumping own forces"/)')
+         if (sanderrank==0) then
+            write(dump_name, '("array_dump."i3.3)') masterrank + 1
+            open(95, file = dump_name, status = 'replace', action = 'write')
+            write(95, '("own coordinates")')
+            write(95, *) x(:3*natom)
+            write(95, '("end")')
+            write(95, '("own forces")')
+            write(95, *) f(:3*natom)
+            write(95, '("end")')
+            write(95, '("own forces after reduction")')
+            write(95, *) f_buff
+            write(95, '("end")')
+            !close(95)
+            deallocate(f_buff)
+         else
+            deallocate(f_buff)
+         end if
+         force_not_dumped = .false.
+      end if
+
       myeptot = ener%pot%tot
       call xdist(v, xx(lfrctmp), natom)
    endif ! rem==1 
 ! ------====== END REMD Post-Dynamics ======------
 #endif /* MPI */

