diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts
index 3243af0..e188254 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts
+++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts
@@ -637,17 +637,17 @@
         patchNum: patchRange.patchNum,
         path,
       });
-    const commentCount =
-      changeComments.computeCommentCount({
+    const commentThreadCount =
+      changeComments.computeCommentThreadCount({
         patchNum: patchRange.basePatchNum,
         path,
       }) +
-      changeComments.computeCommentCount({
+      changeComments.computeCommentThreadCount({
         patchNum: patchRange.patchNum,
         path,
       });
     const commentString = GrCountStringFormatter.computePluralString(
-      commentCount,
+      commentThreadCount,
       'comment'
     );
     const unresolvedString = GrCountStringFormatter.computeString(
@@ -733,16 +733,16 @@
     ) {
       return '';
     }
-    const commentCount =
-      changeComments.computeCommentCount({
+    const commentThreadCount =
+      changeComments.computeCommentThreadCount({
         patchNum: patchRange.basePatchNum,
         path,
       }) +
-      changeComments.computeCommentCount({
+      changeComments.computeCommentThreadCount({
         patchNum: patchRange.patchNum,
         path,
       });
-    return GrCountStringFormatter.computeShortString(commentCount, 'c');
+    return GrCountStringFormatter.computeShortString(commentThreadCount, 'c');
   }
 
   private _reviewFile(path: string, reviewed?: boolean) {
diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js
index 5cb9f15..d85ae4d 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js
+++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js
@@ -355,36 +355,66 @@
     test('comment filtering', () => {
       const comments = {
         '/COMMIT_MSG': [
-          {patch_set: 1, message: 'Done', updated: '2017-02-08 16:40:49'},
-          {patch_set: 1, message: 'oh hay', updated: '2017-02-09 16:40:49'},
-          {patch_set: 2, message: 'hello', updated: '2017-02-10 16:40:49'},
+          {
+            patch_set: 1,
+            message: 'Done',
+            updated: '2017-02-08 16:40:49',
+            id: '1',
+          },
+          {
+            patch_set: 1,
+            message: 'oh hay',
+            updated: '2017-02-09 16:40:49',
+            id: '2',
+          },
+          {
+            patch_set: 2,
+            message: 'hello',
+            updated: '2017-02-10 16:40:49',
+            id: '3',
+          },
         ],
         'myfile.txt': [
-          {patch_set: 1, message: 'good news!', updated: '2017-02-08 16:40:49'},
-          {patch_set: 2, message: 'wat!?', updated: '2017-02-09 16:40:49'},
-          {patch_set: 2, message: 'hi', updated: '2017-02-10 16:40:49'},
+          {
+            patch_set: 1,
+            message: 'good news!',
+            updated: '2017-02-08 16:40:49',
+            id: '4',
+          },
+          {
+            patch_set: 2,
+            message: 'wat!?',
+            updated: '2017-02-09 16:40:49',
+            id: '5',
+          },
+          {
+            patch_set: 2,
+            message: 'hi',
+            updated: '2017-02-10 16:40:49',
+            id: '6',
+          },
         ],
         'unresolved.file': [
           {
             patch_set: 2,
             message: 'wat!?',
             updated: '2017-02-09 16:40:49',
-            id: '1',
+            id: '7',
             unresolved: true,
           },
           {
             patch_set: 2,
             message: 'hi',
             updated: '2017-02-10 16:40:49',
-            id: '2',
-            in_reply_to: '1',
+            id: '8',
+            in_reply_to: '7',
             unresolved: false,
           },
           {
             patch_set: 2,
             message: 'good news!',
             updated: '2017-02-08 16:40:49',
-            id: '3',
+            id: '9',
             unresolved: true,
           },
         ],
@@ -395,14 +425,14 @@
             patch_set: 1,
             message: 'hi',
             updated: '2017-02-15 16:40:49',
-            id: '5',
+            id: '10',
             unresolved: true,
           },
           {
             patch_set: 1,
             message: 'fyi',
             updated: '2017-02-15 16:40:49',
-            id: '6',
+            id: '11',
             unresolved: false,
           },
         ],
@@ -411,7 +441,7 @@
             patch_set: 1,
             message: 'hi',
             updated: '2017-02-11 16:40:49',
-            id: '4',
+            id: '12',
             unresolved: false,
           },
         ],
@@ -570,10 +600,10 @@
               'file_added_in_rev2.txt', 'comment'), '');
       assert.equal(
           element._computeCommentsString(element.changeComments, parentTo2,
-              'unresolved.file', 'comment'), '3 comments (1 unresolved)');
+              'unresolved.file', 'comment'), '2 comments (1 unresolved)');
       assert.equal(
           element._computeCommentsString(element.changeComments, _1To2,
-              'unresolved.file', 'comment'), '3 comments (1 unresolved)');
+              'unresolved.file', 'comment'), '2 comments (1 unresolved)');
     });
 
     test('_reviewedTitle', () => {
diff --git a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.ts b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.ts
index 8dce63f..367bbd6 100644
--- a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.ts
+++ b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.ts
@@ -436,14 +436,19 @@
   }
 
   /**
-   * Computes a string counting the number of commens in a given file.
+   * Computes the number of comment threads in a given file or patch.
    */
-  computeCommentCount(file: PatchSetFile | PatchNumOnly) {
+  computeCommentThreadCount(file: PatchSetFile | PatchNumOnly) {
+    let comments: Comment[] = [];
     if (isPatchSetFile(file)) {
-      return this.getAllCommentsForFile(file).length;
+      comments = this.getAllCommentsForFile(file);
+    } else {
+      comments = this._commentObjToArray(
+        this.getAllPublishedComments(file.patchNum)
+      );
     }
-    const allComments = this.getAllPublishedComments(file.patchNum);
-    return this._commentObjToArray(allComments).length;
+
+    return this.getCommentThreads(comments).length;
   }
 
   /**
diff --git a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js
index 2cf9bc1..be6f646 100644
--- a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js
@@ -220,14 +220,14 @@
         const drafts = {
           'file/one': [
             {
-              id: '11',
+              id: '12',
               patch_set: 2,
               side: PARENT,
               line: 1,
               updated: makeTime(3),
             },
             {
-              id: '12',
+              id: '13',
               in_reply_to: '04',
               patch_set: 2,
               line: 1,
@@ -289,21 +289,30 @@
               id: '07',
               patch_set: 2,
               side: PARENT,
-              unresolved: true,
+              unresolved: false,
               line: 1,
               updated: makeTime(1),
             },
-            {id: '08', patch_set: 3, line: 1, updated: makeTime(1)},
+            {
+              id: '08',
+              patch_set: 2,
+              side: PARENT,
+              unresolved: true,
+              in_reply_to: '07',
+              line: 1,
+              updated: makeTime(1),
+            },
+            {id: '09', patch_set: 3, line: 1, updated: makeTime(1)},
           ],
           'file/four': [
             {
-              id: '09',
+              id: '10',
               patch_set: 5,
               side: PARENT,
               line: 1,
               updated: makeTime(1),
             },
-            {id: '10', patch_set: 5, line: 1, updated: makeTime(1)},
+            {id: '11', patch_set: 5, line: 1, updated: makeTime(1)},
           ],
         };
         element._changeComments =
@@ -439,19 +448,19 @@
             element._changeComments.computeUnresolvedNum(1, 'path'), 0);
       });
 
-      test('computeCommentCount', () => {
+      test('computeCommentThreadCount', () => {
         assert.equal(element._changeComments
-            .computeCommentCount({
+            .computeCommentThreadCount({
               patchNum: 2,
               path: 'file/one',
-            }), 4);
+            }), 3);
         assert.equal(element._changeComments
-            .computeCommentCount({
+            .computeCommentThreadCount({
               patchNum: 1,
               path: 'file/one',
             }), 0);
         assert.equal(element._changeComments
-            .computeCommentCount({
+            .computeCommentThreadCount({
               patchNum: 2,
               path: 'file/three',
             }), 1);
@@ -572,7 +581,7 @@
                 updated: '2013-02-26 15:03:43.986000000',
               },
               {
-                id: '12',
+                id: '13',
                 in_reply_to: '04',
                 patch_set: 2,
                 line: 1,
@@ -622,6 +631,17 @@
                 id: '07',
                 patch_set: 2,
                 side: 'PARENT',
+                unresolved: false,
+                line: 1,
+                path: 'file/three',
+                __path: 'file/three',
+                updated: '2013-02-26 15:01:43.986000000',
+              },
+              {
+                id: '08',
+                in_reply_to: '07',
+                patch_set: 2,
+                side: 'PARENT',
                 unresolved: true,
                 line: 1,
                 path: 'file/three',
@@ -637,7 +657,7 @@
           }, {
             comments: [
               {
-                id: '08',
+                id: '09',
                 patch_set: 3,
                 line: 1,
                 path: 'file/three',
@@ -648,11 +668,11 @@
             patchNum: 3,
             path: 'file/three',
             line: 1,
-            rootId: '08',
+            rootId: '09',
           }, {
             comments: [
               {
-                id: '09',
+                id: '10',
                 patch_set: 5,
                 side: 'PARENT',
                 line: 1,
@@ -665,11 +685,11 @@
             patchNum: 5,
             path: 'file/four',
             line: 1,
-            rootId: '09',
+            rootId: '10',
           }, {
             comments: [
               {
-                id: '10',
+                id: '11',
                 patch_set: 5,
                 line: 1,
                 path: 'file/four',
@@ -677,7 +697,7 @@
                 updated: '2013-02-26 15:01:43.986000000',
               },
             ],
-            rootId: '10',
+            rootId: '11',
             patchNum: 5,
             path: 'file/four',
             line: 1,
@@ -700,7 +720,7 @@
           }, {
             comments: [
               {
-                id: '11',
+                id: '12',
                 patch_set: 2,
                 side: 'PARENT',
                 line: 1,
@@ -710,7 +730,7 @@
                 updated: '2013-02-26 15:03:43.986000000',
               },
             ],
-            rootId: '11',
+            rootId: '12',
             commentSide: 'PARENT',
             patchNum: 2,
             path: 'file/one',
@@ -745,7 +765,7 @@
             __path: 'file/one',
             path: 'file/one',
             __draft: true,
-            id: '12',
+            id: '13',
             in_reply_to: '04',
             patch_set: 2,
             line: 1,
@@ -756,7 +776,7 @@
             expectedComments);
 
         expectedComments = [{
-          id: '11',
+          id: '12',
           patch_set: 2,
           side: 'PARENT',
           line: 1,
@@ -766,7 +786,7 @@
           updated: '2013-02-26 15:03:43.986000000',
         }];
 
-        assert.deepEqual(element._changeComments.getCommentsForThread('11'),
+        assert.deepEqual(element._changeComments.getCommentsForThread('12'),
             expectedComments);
 
         assert.deepEqual(element._changeComments.getCommentsForThread('1000'),
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
index f749f0e..d0be880 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
@@ -1369,9 +1369,12 @@
       patchNum,
       path,
     });
-    const commentCount = changeComments.computeCommentCount({patchNum, path});
-    const commentString = GrCountStringFormatter.computePluralString(
-      commentCount,
+    const commentThreadCount = changeComments.computeCommentThreadCount({
+      patchNum,
+      path,
+    });
+    const commentThreadString = GrCountStringFormatter.computePluralString(
+      commentThreadCount,
       'comment'
     );
     const unresolvedString = GrCountStringFormatter.computeString(
@@ -1381,7 +1384,7 @@
 
     const unmodifiedString = changeFileInfo.status === 'U' ? 'no changes' : '';
 
-    return [unmodifiedString, commentString, unresolvedString]
+    return [unmodifiedString, commentThreadString, unresolvedString]
       .filter(v => v && v.length > 0)
       .join(', ');
   }
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
index 569e6df..9a08723 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
@@ -148,7 +148,7 @@
             path: '/COMMIT_MSG',
           },
         ]},
-        computeCommentCount: () => {},
+        computeCommentThreadCount: () => {},
         computeUnresolvedNum: () => {},
         getPaths: () => {},
         getCommentsBySideForPath: () => {},
@@ -903,14 +903,14 @@
     test('_computeCommentString', done => {
       const path = '/test';
       element.$.commentAPI.loadAll().then(comments => {
-        const commentCountStub =
-            sinon.stub(comments, 'computeCommentCount');
+        const commentThreadCountStub =
+            sinon.stub(comments, 'computeCommentThreadCount');
         const unresolvedCountStub =
             sinon.stub(comments, 'computeUnresolvedNum');
-        commentCountStub.withArgs({patchNum: 1, path}).returns(0);
-        commentCountStub.withArgs({patchNum: 2, path}).returns(1);
-        commentCountStub.withArgs({patchNum: 3, path}).returns(2);
-        commentCountStub.withArgs({patchNum: 4, path}).returns(0);
+        commentThreadCountStub.withArgs({patchNum: 1, path}).returns(0);
+        commentThreadCountStub.withArgs({patchNum: 2, path}).returns(1);
+        commentThreadCountStub.withArgs({patchNum: 3, path}).returns(2);
+        commentThreadCountStub.withArgs({patchNum: 4, path}).returns(0);
         unresolvedCountStub.withArgs({patchNum: 1, path}).returns(1);
         unresolvedCountStub.withArgs({patchNum: 2, path}).returns(0);
         unresolvedCountStub.withArgs({patchNum: 3, path}).returns(2);
@@ -957,8 +957,8 @@
           basePatchNum: PARENT,
           patchNum: 10,
         };
-        // computeCommentCount is an empty function hence stubbing function
-        // that depends on it's return value
+        // computeCommentThreadCount is an empty function hence stubbing
+        // function that depends on it's return value
         sinon.stub(element, '_computeCommentString').returns('');
         element._change = {_number: 42};
         element._files = getFilesFromFileList(
diff --git a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.ts b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.ts
index 2b997fd..2a9fe54 100644
--- a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.ts
+++ b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.ts
@@ -375,9 +375,11 @@
       return;
     }
 
-    const commentCount = changeComments.computeCommentCount({patchNum});
-    const commentString = GrCountStringFormatter.computePluralString(
-      commentCount,
+    const commentThreadCount = changeComments.computeCommentThreadCount({
+      patchNum,
+    });
+    const commentThreadString = GrCountStringFormatter.computePluralString(
+      commentThreadCount,
       'comment'
     );
 
@@ -387,14 +389,14 @@
       'unresolved'
     );
 
-    if (!commentString.length && !unresolvedString.length) {
+    if (!commentThreadString.length && !unresolvedString.length) {
       return '';
     }
 
     return (
-      ` (${commentString}` +
-      // Add a comma + space if both comments and unresolved
-      (commentString && unresolvedString ? ', ' : '') +
+      ` (${commentThreadString}` +
+      // Add a comma + space if both comment threads and unresolved
+      (commentThreadString && unresolvedString ? ', ' : '') +
       `${unresolvedString})`
     );
   }
@@ -437,7 +439,7 @@
         previous: detail.patchNum,
         current: e.detail.value,
         latest: latestPatchNum,
-        commentCount: this.changeComments?.computeCommentCount({
+        commentCount: this.changeComments?.computeCommentThreadCount({
           patchNum: e.detail.value as PatchSetNum,
         }),
       });
@@ -447,7 +449,7 @@
       this.reporting.reportInteraction('left-patchset-changed', {
         previous: detail.basePatchNum,
         current: e.detail.value,
-        commentCount: this.changeComments?.computeCommentCount({
+        commentCount: this.changeComments?.computeCommentThreadCount({
           patchNum: patchSetValue,
         }),
       });
