diff --git a/provingground/cts/lib/upload_utils.py b/provingground/cts/lib/upload_utils.py
index 06ac5d9..8ad824e 100755
--- a/provingground/cts/lib/upload_utils.py
+++ b/provingground/cts/lib/upload_utils.py
@@ -13,7 +13,6 @@
 import shutil
 import zipfile
 
-
 class UploadUtils(object):
   """Internal Helper for CTS and CTS Verifier Upload scripts."""
 
@@ -43,9 +42,12 @@
                        'CTS VERIFIER VERSION')
   def __init__(self):
     self.build_info_list = []
+    self.passed_list = []
+    self.failed_list = []
     self.obsolete_file_count = 0
     self.untested_file_count = 0
     self.build_mismatch_file_count = 0
+    self.found = 0
 
   def PrintObsoleteFolderCount(self):
     """Prints obsolete file count in case of build id mismatch."""
@@ -126,7 +128,19 @@
           ('{:>%s}'%self.SPACE_COUNT_CTSV_BUILD_VERSION).format(item[2]),
           ('{:>%s}'%self.SPACE_COUNT_VERIFIER_VERSION).format(item[3]))
 
-  def PrintFormattedDataCts(self, item):
+  def SegregateCtsDataToPrint(self, item):
+    """Segregates passed and failed results into two separate lists.
+
+    Args:
+       item: Board information.
+    """
+    if item[7] == "1":
+      self.passed_list.append(item)
+      self.PrintCtsResults(item)
+    else:
+      self.failed_list.append(item)
+
+  def PrintCtsResults(self, item):
     """Prints build information in a tabular form to the terminal.
 
     Sample table printed to terminal:
diff --git a/provingground/cts/upload_cts.py b/provingground/cts/upload_cts.py
index 42168c1..01aa3a3 100755
--- a/provingground/cts/upload_cts.py
+++ b/provingground/cts/upload_cts.py
@@ -42,11 +42,15 @@
     self.obsolete_files_exist = False
     self.input_build_id = input_build_id
     self.dir_path = dir_path
+    self.nextelem = 0
+    self.idx = 0
 
   def PrintBuildInfoList(self):
     """Sorts build information by build board and prints to the terminal."""
     self.build_info_list.sort(key=lambda x: x[1])
     for item in self.build_info_list:
+      self.idx = (self.idx + 1) % len(self.build_info_list)
+      self.nextelem = self.build_info_list[self.idx]
       if self.current_test_board_name != item[1]:
         title_msg = 'List of files for %s' % item[1]
         table_column_header = self.TABLE_HEADER_CTS
@@ -63,7 +67,35 @@
               self.C_END)
 
         self.current_test_board_name = item[1]
-      self.PrintFormattedDataCts(item)
+        if self.failed_list:
+          self.failed_list.clear()
+        if self.passed_list:
+          self.passed_list.clear()
+
+      self.SegregateCtsDataToPrint(item)
+      #Print failed result if there is only one item in the list.
+      if len(self.build_info_list) == 1:
+        if self.failed_list:
+          for i in range(len(self.failed_list)):
+            self.PrintCtsResults(self.failed_list[i])
+
+      #If there is a mix of passed & failed results, print only valid failures.
+      if self.failed_list:
+        if self.passed_list:
+        #If a test has passed at least once, the results are not printed.
+          for i in range(len(self.failed_list)):
+            for j in range(len(self.passed_list)):
+              if(self.failed_list[i][1] == self.passed_list[j][1] and
+                 self.failed_list[i][3] == self.passed_list[j][3] and
+                 self.failed_list[i][5] == self.passed_list[j][5]):
+                self.found = 1
+              else:
+                if self.found != 1:
+                  self.found = 0
+          #Check no more results to parse for board and print valid failure.
+          if self.found == 0 and self.nextelem[1] != item[1]:
+            for i in range(len(self.failed_list)):
+              self.PrintCtsResults(self.failed_list[i])
     print('\n')
 
   def PrintGsutilLinks(self, dir_path):
