diff --git a/tests/test27cells.c b/tests/test27cells.c
index 4770c8ea2e5c1a64ff30c76aacdea540315cae10..bd10225fd2f04523b47738ce8fdb275d5af3fc3d 100644
--- a/tests/test27cells.c
+++ b/tests/test27cells.c
@@ -30,6 +30,8 @@
 /* Local headers. */
 #include "swift.h"
 
+#define ACC_THRESHOLD 1e-5
+
 enum velocity_types {
   velocity_zero,
   velocity_random,
@@ -254,6 +256,26 @@ void dump_particle_fields(char *fileName, struct cell *main_cell,
   fclose(file);
 }
 
+/**
+ * @brief Compares the vectorised result against
+ * the serial result of the interaction.
+ *
+ * @param serial_parts Particle array that has been interacted serially
+ * @param vec_parts Particle array to be interacted using vectors
+ * @param count No. of particles that have been interacted
+ * @param threshold Level of accuracy needed
+ *
+ * @return Non-zero value if difference found, 0 otherwise
+ */
+int check_results(struct part *serial_parts, struct part *vec_parts, int count, double threshold) {
+  int result = 0;
+
+  for (int i = 0; i < count; i++)
+    result += compare_particles(serial_parts[i], vec_parts[i], threshold);
+
+  return result;
+}
+
 /* Just a forward declaration... */
 void runner_dopair1_density(struct runner *r, struct cell *ci, struct cell *cj);
 void runner_doself1_density(struct runner *r, struct cell *ci);
@@ -264,6 +286,7 @@ int main(int argc, char *argv[]) {
   size_t runs = 0, particles = 0;
   double h = 1.23485, size = 1., rho = 1.;
   double perturbation = 0.;
+  double threshold = ACC_THRESHOLD;
   char outputFileNameExtension[200] = "";
   char outputFileName[200] = "";
   enum velocity_types vel = velocity_zero;
@@ -279,7 +302,7 @@ int main(int argc, char *argv[]) {
   srand(0);
 
   char c;
-  while ((c = getopt(argc, argv, "m:s:h:n:r:t:d:f:v:")) != -1) {
+  while ((c = getopt(argc, argv, "m:s:h:n:r:t:d:f:v:a:")) != -1) {
     switch (c) {
       case 'h':
         sscanf(optarg, "%lf", &h);
@@ -305,6 +328,9 @@ int main(int argc, char *argv[]) {
       case 'v':
         sscanf(optarg, "%d", (int *)&vel);
         break;
+      case 'a':
+        sscanf(optarg, "%lf", &threshold);
+        break;
       case '?':
         error("Unknown option.");
         break;
@@ -411,6 +437,11 @@ int main(int argc, char *argv[]) {
     }
   }
 
+  /* Store the vectorised particle results. */ 
+  struct part vec_parts[main_cell->count];
+  for(int i=0; i<main_cell->count; i++)
+    vec_parts[i] = main_cell->parts[i];
+
   /* Output timing */
   message("SWIFT calculation took       : %15lli ticks.", time / runs);
 
@@ -441,6 +472,10 @@ int main(int argc, char *argv[]) {
   sprintf(outputFileName, "brute_force_27_%s.dat", outputFileNameExtension);
   dump_particle_fields(outputFileName, main_cell, cells);
 
+  /* Check serial results against the vectorised results. */
+  if (check_results(main_cell->parts, vec_parts, main_cell->count, threshold))
+    message("Differences found...");
+  
   /* Output timing */
   message("Brute force calculation took : %15lli ticks.", toc - tic);