diff --git a/src/common_io.c b/src/common_io.c
index 2842fad78d9b55af12d9e68f064564d271a3f00a..1289e0a4139dbd7a5d404ebcaae50e7c92d1dcc6 100644
--- a/src/common_io.c
+++ b/src/common_io.c
@@ -489,8 +489,8 @@ void io_write_cell_offsets(hid_t h_grp, const int cdim[3],
                 MPI_COMM_WORLD);
 #endif
 
-  message("offsets=%lld %lld", offset_part[0], offset_part[1]);
-  message("counts=%lld %lld", count_part[0], count_part[1]);
+  /* Only rank 0 actually writes */
+  if (nodeID != 0) return;
 
   /* Write some meta-information first */
   hid_t h_subgrp =
diff --git a/src/parallel_io.c b/src/parallel_io.c
index 611e4af99f138a557719b505f0891c345025e41e..170c1c67dd0e1396d9a360cf4fe9052af2d87bf2 100644
--- a/src/parallel_io.c
+++ b/src/parallel_io.c
@@ -1282,6 +1282,21 @@ void write_output_parallel(struct engine* e, const char* baseName,
     snprintf(fileName, FILENAME_BUFFER_SIZE, "%s_%04i.hdf5", baseName,
              e->snapshot_output_count);
 
+  if (nodeID == 0) {
+    h_file = H5Fopen(fileName, H5F_ACC_RDWR, H5P_DEFAULT);
+    if (h_file < 0)
+      error("Error while opening file '%s' on rank %d.", fileName, mpi_rank);
+  } else {
+    h_file = 0;
+  }
+
+  io_write_cell_offsets(h_file, e->s->cdim, e->s->cells_top, e->s->nr_cells,
+                        e->s->width, e->nodeID, N_total, offset);
+
+  if (nodeID == 0) {
+    H5Fclose(h_file);
+  }
+
   /* Prepare some file-access properties */
   hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS);