diff --git a/webv4/lib/files.js b/webv4/lib/files.js
index a4fc22ba812564cace06a8fa54f5533e58b19c1a..ea409ba4c751e43fa456322e333348c179aafe71 100644
--- a/webv4/lib/files.js
+++ b/webv4/lib/files.js
@@ -8,20 +8,25 @@ function count_files(dir) {
     return Math.floor(file_size(fn) / 22); // ixb record length is 22 bytes
 }
 
+function libHasFiles(lib) {
+    return lib.dir_list.some(function (e) {
+        return count_files(e.code) > 0;
+    });
+}
+
 function listLibraries() {
-	return file_area.lib_list.filter(function (library) {
-        return library.dir_list.length >= 1;
+	return file_area.lib_list.filter(function (lib) {
+        return lib.dir_list.length >= 1 && libHasFiles(lib);
     });
 }
 
-function listDirectories(library) {
-	var dirs = [];
-	file_area.lib_list[library].dir_list.forEach(function (dir) {
-        const fc = count_files(dir.code);
-        if (fc < 1) return;
-		dirs.push({ dir: dir, fileCount: fc });
-	});
-	return dirs;
+function listDirectories(lib) {
+    return file_area.lib_list[lib].dir_list.reduce(function (a, c) {
+        const fc = count_files(c.code);
+        if (fc < 1) return a;
+        a.push({ dir: c, fileCount: fc });
+        return a;
+    }, []);
 }
 
 function listFiles(dir) {