diff --git a/btpd/cli_if.c b/btpd/cli_if.c
index 61858b9..7069977 100644
--- a/btpd/cli_if.c
+++ b/btpd/cli_if.c
@@ -153,6 +153,10 @@ write_ans(struct iobuf *iob, struct tlib *tl, enum ipc_tval val)
     case IPC_TVAL_TRERR:
         iobuf_print(iob, "i%dei%ue", IPC_TYPE_NUM, 0);
         return;
+    case IPC_TVAL_TRGOOD:
+        iobuf_print(iob, "i%dei%de", IPC_TYPE_NUM,
+            tl->tp == NULL ? 0 : tr_good_count(tl->tp));
+        return;
     case IPC_TVALCOUNT:
         break;
     }
diff --git a/cli/stat.c b/cli/stat.c
index 6d3b517..b4ad898 100644
--- a/cli/stat.c
+++ b/cli/stat.c
@@ -28,7 +28,7 @@ usage_stat(void)
 struct btstat {
     unsigned num;
     enum ipc_tstate state;
-    unsigned peers, tr_errors;
+    unsigned peers, tr_good;
     long long content_got, content_size, downloaded, uploaded, rate_up,
         rate_down, tot_up;
     uint32_t pieces_seen, torrent_pieces;
@@ -44,7 +44,7 @@ static enum ipc_tval stkeys[] = {
     IPC_TVAL_NUM,
     IPC_TVAL_NAME,
     IPC_TVAL_PCOUNT,
-    IPC_TVAL_TRERR,
+    IPC_TVAL_TRGOOD,
     IPC_TVAL_PCCOUNT,
     IPC_TVAL_PCSEEN,
     IPC_TVAL_SESSUP,
@@ -69,8 +69,7 @@ print_stat(struct btstat *st)
     print_ratio(st->tot_up, st->content_size);
     printf("%4u ", st->peers);
     print_percent(st->pieces_seen, st->torrent_pieces);
-    if (st->tr_errors > 0)
-        printf("E%u", st->tr_errors);
+    printf("%3u", st->tr_good);
     printf("\n");
 }
 
@@ -94,8 +93,7 @@ stat_cb(int obji, enum ipc_err objerr, struct ipc_get_res *res, void *arg)
     tot->rate_up += (st.rate_up = res[IPC_TVAL_RATEUP].v.num);
     tot->peers += (st.peers = res[IPC_TVAL_PCOUNT].v.num);
     tot->tot_up += (st.tot_up = res[IPC_TVAL_TOTUP].v.num);
-    if ((st.tr_errors = res[IPC_TVAL_TRERR].v.num) > 0)
-        tot->tr_errors++;
+    tot->tr_good += (st.tr_good = res[IPC_TVAL_TRGOOD].v.num);
     if (cba->individual) {
         if (cba->names)
             printf("%.*s\n", (int)res[IPC_TVAL_NAME].v.str.l,
@@ -125,7 +123,7 @@ again:
         } else
             header = 20;
         printf("  HAVE   DLOAD      RTDWN   ULOAD       RTUP   RATIO CONN"
-            "  AVAIL\n");
+            "  AVAIL  TR\n");
     }
 
     bzero(&cba.tot, sizeof(cba.tot));
diff --git a/misc/ipcdefs.h b/misc/ipcdefs.h
index f36d724..fa06949 100644
--- a/misc/ipcdefs.h
+++ b/misc/ipcdefs.h
@@ -41,6 +41,7 @@ TVDEF(STATE,    TSTATE,         "state")
 TVDEF(TOTDWN,   NUM,            "total_down")
 TVDEF(TOTUP,    NUM,            "total_up")
 TVDEF(TRERR,    NUM,            "tr_errors")
+TVDEF(TRGOOD, NUM,              "tr_good")
 #ifdef __IPCTV
 #undef __IPCTV
 #undef TVDEF