diff -r 1097a060842a browser.c
--- a/browser.c	Sun Jan 11 16:04:13 2009 -0800
+++ b/browser.c	Thu Jan 15 20:41:08 2009 +0000
@@ -29,6 +29,7 @@
 #include "sort.h"
 #include "mailbox.h"
 #include "browser.h"
+#include "lib.h"
 #ifdef USE_IMAP
 #include "imap.h"
 #endif
@@ -105,6 +106,16 @@
   return ((BrowserSort & SORT_REVERSE) ? -r : r);
 }
 
+static int browser_compare_count (const void *a, const void *b)
+{
+	struct folder_file *pa = (struct folder_file *) a;
+	struct folder_file *pb = (struct folder_file *) b;
+
+	return ((BrowserSort & SORT_REVERSE) ? 
+			(pa->new > 0 || pb->new > 0 ? pb->new : pa->new) : 
+			(pa->new > 0 || pb->new > 0 ? pa->new : pb->new) );
+}
+
 static void browser_sort (struct browser_state *state)
 {
   int (*f) (const void *, const void *);
@@ -118,6 +129,9 @@
       break;
     case SORT_SIZE:
       f = browser_compare_size;
+      break;
+    case SORT_COUNT:
+      f = browser_compare_count;
       break;
     case SORT_SUBJECT:
     default:
@@ -1105,9 +1119,9 @@
 	  int reverse = (i == OP_SORT_REVERSE);
 	  
 	  switch (mutt_multi_choice ((reverse) ?
-	      _("Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? ") :
-	      _("Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? "),
-	      _("dazn")))
+	      _("Reverse sort by (d)ate, (a)lpha, si(z)e, (c)ount or do(n)'t sort? ") :
+	      _("Sort by (d)ate, (a)lpha, si(z)e, (c)ount or do(n)'t sort? "),
+	      _("dazcn")))
 	  {
 	    case -1: /* abort */
 	      resort = 0;
@@ -1124,8 +1138,11 @@
             case 3: /* si(z)e */
 	      BrowserSort = SORT_SIZE;
 	      break;
+	    case 4: /* (c)ount */
+	      BrowserSort = SORT_COUNT;
+	      break;
 
-            case 4: /* do(n)'t sort */
+            case 5: /* do(n)'t sort */
 	      BrowserSort = SORT_ORDER;
 	      resort = 0;
 	      break;
diff -r 1097a060842a init.h
--- a/init.h	Sun Jan 11 16:04:13 2009 -0800
+++ b/init.h	Thu Jan 15 20:41:08 2009 +0000
@@ -3334,6 +3334,7 @@
   { "alpha",	SORT_SUBJECT },
   { "date",	SORT_DATE },
   { "size",	SORT_SIZE },
+  { "count",	SORT_COUNT },
   { "unsorted",	SORT_ORDER },
   { NULL }
 };
diff -r 1097a060842a sort.h
--- a/sort.h	Sun Jan 11 16:04:13 2009 -0800
+++ b/sort.h	Thu Jan 15 20:41:08 2009 +0000
@@ -31,6 +31,7 @@
 #define SORT_KEYID	12
 #define SORT_TRUST	13
 #define SORT_SPAM	14
+#define SORT_COUNT	15
 /* dgc: Sort & SortAux are shorts, so I'm bumping these bitflags up from
  * bits 4 & 5 to bits 8 & 9 to make room for more sort keys in the future. */
 #define SORT_MASK	0xff
