diff --git a/src/logger.c b/src/logger.c
index caccd8c61d09f97e02a0d5f6cc12227fb8a6799f..8275cff3887749a5ca80be3bd19af4246101f04a 100644
--- a/src/logger.c
+++ b/src/logger.c
@@ -157,40 +157,11 @@ int logger_compute_chunk_size(unsigned int mask) {
 
   } else {
 
-    /* Particle position as three doubles. */
-    if (mask & logger_mask_data[logger_x].mask) {
-      size += logger_mask_data[logger_x].size;
-    }
-
-    /* Particle velocity as three floats. */
-    if (mask & logger_mask_data[logger_v].mask) {
-      size += logger_mask_data[logger_v].size;
-    }
-
-    /* Particle accelleration as three floats. */
-    if (mask & logger_mask_data[logger_a].mask) {
-      size += logger_mask_data[logger_a].size;
-    }
-
-    /* Particle internal energy as a single float. */
-    if (mask & logger_mask_data[logger_u].mask) {
-      size += logger_mask_data[logger_u].size;
-    }
-
-    /* Particle smoothing length as a single float. */
-    if (mask & logger_mask_data[logger_h].mask) {
-      size += logger_mask_data[logger_h].size;
-    }
-
-    /* Particle density as a single float. */
-    if (mask & logger_mask_data[logger_rho].mask) {
-      size += logger_mask_data[logger_rho].size;
-    }
-
-    /* Particle constants, which is a bit more complicated. */
-    if (mask & logger_mask_data[logger_consts].mask) {
-      size += logger_mask_data[logger_consts].size;
-    }
+    for(int i=0; i < logger_count_mask; i++) {
+      if (mask & logger_mask_data[i].mask) {
+	size += logger_mask_data[i].size;
+      }
+    }      
   }
 
   return size;
@@ -439,26 +410,6 @@ void logger_ensure_size(struct logger *log, size_t total_nr_parts,
   dump_ensure(&log->dump, limit, log->buffer_scale * limit);
 }
 
-/**
- * @brief Compute the maximal size of a chunk.
- *
- * @param log The #logger.
- */
-int logger_compute_max_chunk_size(const struct logger *log) {
-
-  int *output = malloc(sizeof(int) * logger_count_mask);
-  if (output == NULL) error("Unable to allocate memory");
-
-  int max_size = logger_offset_size + logger_mask_size;
-  /* Loop over all fields except timestamp */
-  for (int i = 0; i < logger_count_mask - 1; i++) {
-    max_size += logger_mask_data[i].size;
-  }
-
-  free(output);
-  return max_size;
-}
-
 /**
  * @brief intialize the logger structure
  *
@@ -483,8 +434,14 @@ void logger_init(struct logger *log, struct swift_params *params) {
   strcpy(logger_name_file, log->base_name);
   strcat(logger_name_file, ".dump");
 
-  /* Define some constants */
-  log->max_chunk_size = logger_compute_max_chunk_size(log);
+  /* Compute max size for a particle chunk */
+  int max_size = logger_offset_size + logger_mask_size;
+
+  /* Loop over all fields except timestamp */
+  for (int i = 0; i < logger_count_mask - 1; i++) {
+    max_size += logger_mask_data[i].size;
+  }
+  log->max_chunk_size = max_size;
 
   /* init dump */
   dump_init(&log->dump, logger_name_file, buffer_size);