diff --git a/src/cooling/EAGLE/cooling_io.h b/src/cooling/EAGLE/cooling_io.h
index 48c845c254b41f02d8b4ea39ae43a990b0436ac8..86b7067bdfa50aedac80b979adbaee00ba0b73db 100644
--- a/src/cooling/EAGLE/cooling_io.h
+++ b/src/cooling/EAGLE/cooling_io.h
@@ -23,6 +23,7 @@
 #include "../config.h"
 
 /* Local includes */
+#include "cooling.h"
 #include "io_properties.h"
 
 #ifdef HAVE_HDF5
@@ -40,9 +41,17 @@ __attribute__((always_inline)) INLINE static void cooling_write_flavour(
 }
 #endif
 
+INLINE static void convert_part_T(const struct engine* e, const struct part* p,
+                                  const struct xpart* xp, float* ret) {
+
+  ret[0] = cooling_get_temperature(e->physical_constants, e->internal_units,
+                                   e->cosmology, e->cooling_func, p, xp);
+}
+
 /**
  * @brief Specifies which particle fields to write to a dataset
  *
+ * @param parts The particle array.
  * @param xparts The extended data particle array.
  * @param list The list of i/o properties to write.
  * @param cooling The #cooling_function_data
@@ -50,9 +59,13 @@ __attribute__((always_inline)) INLINE static void cooling_write_flavour(
  * @return Returns the number of fields to write.
  */
 __attribute__((always_inline)) INLINE static int cooling_write_particles(
-    const struct xpart* xparts, struct io_props* list,
+    const struct part* parts, const struct xpart* xparts, struct io_props* list,
     const struct cooling_function_data* cooling) {
-  return 0;
+
+  list[0] = io_make_output_field_convert_part("Temperature", FLOAT, 1,
+                                              UNIT_CONV_TEMPERATURE, parts,
+                                              xparts, convert_part_T);
+  return 1;
 }
 
 #endif /* SWIFT_COOLING_EAGLE_IO_H */
diff --git a/src/parallel_io.c b/src/parallel_io.c
index febbb4a7db6796fd751cb1eacc174a42936d19a2..5e616d52b97563ab1a8a52108d31223f94580df8 100644
--- a/src/parallel_io.c
+++ b/src/parallel_io.c
@@ -1394,8 +1394,8 @@ void write_output_parallel(struct engine* e, const char* baseName,
           Nparticles = Ngas;
           hydro_write_particles(parts, xparts, list, &num_fields);
           num_fields += chemistry_write_particles(parts, list + num_fields);
-          num_fields += cooling_write_particles(xparts, list + num_fields,
-                                                e->cooling_func);
+          num_fields += cooling_write_particles(
+              parts, xparts, list + num_fields, e->cooling_func);
         } else {
 
           /* Ok, we need to fish out the particles we want */
@@ -1418,8 +1418,9 @@ void write_output_parallel(struct engine* e, const char* baseName,
                                 &num_fields);
           num_fields +=
               chemistry_write_particles(parts_written, list + num_fields);
-          num_fields += cooling_write_particles(
-              xparts_written, list + num_fields, e->cooling_func);
+          num_fields +=
+              cooling_write_particles(parts_written, xparts_written,
+                                      list + num_fields, e->cooling_func);
         }
       } break;
 
diff --git a/src/serial_io.c b/src/serial_io.c
index 059318df180e0d06e446f9d3f839b16439dd1b34..76f55897dac6ec620f28aa837b81ae0f5e6b8739 100644
--- a/src/serial_io.c
+++ b/src/serial_io.c
@@ -1071,8 +1071,8 @@ void write_output_serial(struct engine* e, const char* baseName,
               Nparticles = Ngas;
               hydro_write_particles(parts, xparts, list, &num_fields);
               num_fields += chemistry_write_particles(parts, list + num_fields);
-              num_fields += cooling_write_particles(xparts, list + num_fields,
-                                                    e->cooling_func);
+              num_fields += cooling_write_particles(
+                  parts, xparts, list + num_fields, e->cooling_func);
             } else {
 
               /* Ok, we need to fish out the particles we want */
@@ -1095,8 +1095,9 @@ void write_output_serial(struct engine* e, const char* baseName,
                                     &num_fields);
               num_fields +=
                   chemistry_write_particles(parts_written, list + num_fields);
-              num_fields += cooling_write_particles(
-                  xparts_written, list + num_fields, e->cooling_func);
+              num_fields +=
+                  cooling_write_particles(parts_written, xparts_written,
+                                          list + num_fields, e->cooling_func);
             }
           } break;
 
diff --git a/src/single_io.c b/src/single_io.c
index 833c4a80cb2f43455d34ad3cd694255b7b19038c..67c3250e37e62f5399716a9c87255d447b4da076 100644
--- a/src/single_io.c
+++ b/src/single_io.c
@@ -890,8 +890,8 @@ void write_output_single(struct engine* e, const char* baseName,
           N = Ngas;
           hydro_write_particles(parts, xparts, list, &num_fields);
           num_fields += chemistry_write_particles(parts, list + num_fields);
-          num_fields += cooling_write_particles(xparts, list + num_fields,
-                                                e->cooling_func);
+          num_fields += cooling_write_particles(
+              parts, xparts, list + num_fields, e->cooling_func);
         } else {
 
           /* Ok, we need to fish out the particles we want */
@@ -914,8 +914,9 @@ void write_output_single(struct engine* e, const char* baseName,
                                 &num_fields);
           num_fields +=
               chemistry_write_particles(parts_written, list + num_fields);
-          num_fields += cooling_write_particles(
-              xparts_written, list + num_fields, e->cooling_func);
+          num_fields +=
+              cooling_write_particles(parts_written, xparts_written,
+                                      list + num_fields, e->cooling_func);
         }
       } break;