anchor.diff:    type particle_system_io_info_t
        integer :: mode
        integer :: step
  +     integer :: step_offset = -1
        double precision :: time
  +     double precision :: time_offset = -1
        logical :: store
     end type particle_system_io_info_t
   
  
positive.code: 
    end subroutine ps_close
  
    subroutine thermo_init(this, datafile, n_buffer, step, time)
      class(thermo_t), intent(out) :: this
      type(h5md_file_t), intent(inout) :: datafile
      integer, intent(in) :: n_buffer
      integer, intent(in) :: step
      double precision, intent(in) :: time
  
      type(h5md_element_t) :: e
      double precision :: dummy, dummy_vec(3)
      integer :: mode
  
      if (n_buffer <= 0) error stop 'n_buffer non-positive in thermo_init'
  
      this% n_buffer = n_buffer
      this% idx = 0
  
negative.code: 
      if (this%species_info%store) then
         info = this%species_info
         if ( (info%step_offset < 0) .and. (info%time_offset > 0) .or. &
              (info%step_offset > 0) .and. (info%time_offset < 0) ) then
            stop 'use both or neither of step_offset and time_offset in ps_init species'
         end if
  
         if (iand(info%mode, H5MD_TIME) == H5MD_TIME) then
            call this%species%create_time(this% group, 'species', ps% species, info%mode)
         else if (iand(info%mode, H5MD_LINEAR) == H5MD_LINEAR) then
            if (info%step_offset > 0) then
               call this%species%create_time(this% group, 'species', ps% species, info%mode, info%step, &
                    info%time, step_offset=info%step_offset, time_offset=info%time_offset)
            else
               call this%species%create_time(this% group, 'species', ps% species, info%mode, info%step, &
                    info%time)
            end if
         else if (iand(info%mode, H5MD_FIXED) == H5MD_FIXED) then
            call this%species%create_fixed(this% group, 'species', ps% species)
         else
  