{
        int first_tag = 1;
 
-       if (! first_thread)
+       if (first_thread)
+           fputs (format->results_start, stdout);
+       else
            fputs (format->item_sep, stdout);
 
        thread = notmuch_threads_get (threads);
        notmuch_thread_destroy (thread);
     }
 
+    if (! first_thread)
+       fputs (format->results_end, stdout);
+
     return 0;
 }
 
     {
        message = notmuch_messages_get (messages);
 
-       if (! first_message)
+       if (first_message)
+           fputs (format->results_start, stdout);
+       else
            fputs (format->item_sep, stdout);
 
        if (output == OUTPUT_FILES) {
 
     notmuch_messages_destroy (messages);
 
+    if (! first_message)
+       fputs (format->results_end, stdout);
+
     return 0;
 }
 
 
     notmuch_query_set_sort (query, sort);
 
-    fputs (format->results_start, stdout);
-
     switch (output) {
     default:
     case OUTPUT_SUMMARY:
        break;
     }
 
-    fputs (format->results_end, stdout);
-
     notmuch_query_destroy (query);
     notmuch_database_close (notmuch);