diff --git a/src/parallel_io.c b/src/parallel_io.c
index a87c8e9fa1f8f30838996b098f57973e26aabc56..401e3b7da0f7e9f1f01217651260ac90810ac22d 100644
--- a/src/parallel_io.c
+++ b/src/parallel_io.c
@@ -839,6 +839,7 @@ void prepare_file(struct engine* e, const char* baseName, long long N_total[6],
   const struct xpart* xparts = e->s->xparts;
   const struct gpart* gparts = e->s->gparts;
   const struct spart* sparts = e->s->sparts;
+  const struct swift_params* params = e->parameter_file;
   FILE* xmfFile = 0;
   int periodic = e->s->periodic;
   int numFiles = 1;
@@ -1019,9 +1020,14 @@ void prepare_file(struct engine* e, const char* baseName, long long N_total[6],
     }
 
     /* Prepare everything */
-    for (int i = 0; i < num_fields; ++i)
-      prepareArray(e, h_grp, fileName, xmfFile, partTypeGroupName, list[i],
-                   N_total[ptype], snapshot_units);
+    for (int i = 0; i < num_fields; ++i) {
+      char field[PARSER_MAX_LINE_SIZE];
+      sprintf(field, "SelectOutput:%s_%s", list[i].name, part_type_names[ptype]);
+      int should_write = parser_get_opt_param_int(params, field, 1);
+      if (should_write != 0)
+	prepareArray(e, h_grp, fileName, xmfFile, partTypeGroupName, list[i],
+		     N_total[ptype], snapshot_units);
+    }
 
     /* Close particle group */
     H5Gclose(h_grp);