diff --git a/include/ajax.reports.php b/include/ajax.reports.php
index 75394d62389f03f1a532ccb0fad29f41375882ac..87ae4a22a92e4fe16e4f01e63507777cdbf386c6 100644
--- a/include/ajax.reports.php
+++ b/include/ajax.reports.php
@@ -104,16 +104,27 @@ class OverviewReportAjaxAPI extends AjaxController {
             ORDER BY '.$info['fields'])
         );
         $rows = array();
+        $cols = 1;
         foreach ($queries as $q) {
             list($c, $sql) = $q;
             $res = db_query($sql);
-            $i = 0;
+            $cols += $c;
             while ($row = db_fetch_row($res)) {
-                if (count($rows) <= $i)
-                    $rows[] = array_slice($row, 0, count($row) - $c);
-                $rows[$i] = array_merge($rows[$i], array_slice($row, -$c));
-                $i++;
+                $found = false;
+                foreach ($rows as &$r) {
+                    if ($r[0] == $row[0]) {
+                        $r = array_merge($r, array_slice($row, -$c));
+                        $found = true;
+                        break;
+                    }
+                }
+                if (!$found)
+                    $rows[] = array_merge(array($row[0]), array_slice($row, -$c));
             }
+            # Make sure each row has the same number of items
+            foreach ($rows as &$r)
+                while (count($r) < $cols)
+                    $r[] = null;
         }
         return array("columns" => array_merge($info['headers'],
                         array('Open','Assigned','Overdue','Closed','Reopened',