anchor.diff:      call h5pcreate_f(H5P_DATASET_CREATE_F, plist, h5_error)
       call h5pset_chunk_f(plist, rank, chunk_dims, h5_error)
       if (trajectory_name .ne. 'species') then
  -       call h5dcreate_f(g_id, 'coordinates', H5T_NATIVE_DOUBLE, s_id, d_id, h5_error, plist)
  -    else
  -       call h5dcreate_f(g_id, 'coordinates', H5T_NATIVE_INTEGER, s_id, d_id, h5_error, plist)
  +       call h5dcreate_f(g_id, 'coordinates', H5T_NATIVE_DOUBLE, s_id, ID% d_id, h5_error, plist)
  +    else
  +       call h5dcreate_f(g_id, 'coordinates', H5T_NATIVE_INTEGER, s_id, ID% d_id, h5_error, plist)
       end if
       call h5pclose_f(plist, h5_error)
       call h5sclose_f(s_id, h5_error)
  
positive.code:     dims(1:2) = shape(data)
      call h5screate_simple_f(2, dims, mem_s, h5_error)
  
      call h5dget_space_f(d_id, d_file_space, h5_error)
      call h5sget_simple_extent_dims_f(d_file_space, dims, max_dims, h5_error)
      dims(3) = dims(3) + 1
      call h5sclose_f(d_file_space, h5_error)
      call h5dset_extent_f(d_id, dims, h5_error)
      call h5dget_space_f(d_id, d_file_space, h5_error)
  
      start(1) = 0 ; start(2) = 0 ; start(3) = dims(3)-1
      num(1) = dims(1) ; num(2) = dims(2) ; num(3) = 1
  
      call h5sselect_hyperslab_f(d_file_space, H5S_SELECT_SET_F, start, num, h5_error)
      call h5dwrite_f(d_id, H5T_NATIVE_DOUBLE, data, dims, h5_error, mem_space_id=mem_s, file_space_id=d_file_space)
      call h5sclose_f(d_file_space, h5_error)
      call h5sclose_f(mem_s, h5_error)
  
      call h5md_append_step_time(s_id, t_id, present_step, time)
  
    end subroutine h5md_write_trajectory_data_d
  
  
negative.code:      integer :: buffer_i
    end type h5md_obs
  
    type h5md_t
       integer(HID_T) :: d_id
       integer(HID_T) :: s_id
       integer(HID_T) :: t_id
    end type h5md_t
    
  contains
  
    ! opens a h5md file
  