diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java
index 5b1a417..3452070 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java
@@ -47,6 +47,7 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import java.io.File;
 import java.util.Collections;
 import java.util.Date;
 
@@ -113,8 +114,24 @@ public void testPackCommitsAndLooseOneWithPruneNow() throws Exception {
 		fsTick();
 		gc.gc();
 		stats = gc.getStatistics();
+		assertNoEmptyFanoutDirectories();
 		assertEquals(0, stats.numberOfLooseObjects);
 		assertEquals(8, stats.numberOfPackedObjects);
 		assertEquals(2, stats.numberOfPackFiles);
 	}
+
+	private void assertNoEmptyFanoutDirectories() {
+		File[] fanout = repo.getObjectsDirectory().listFiles();
+		for (File f : fanout) {
+			if (f.isDirectory()) {
+				String[] entries = f.list();
+				if (entries == null || entries.length == 0) {
+					assertFalse(
+							"Found empty fanout directory "
+									+ f.getAbsolutePath() + " after pruning",
+							f.getName().length() == 2);
+				}
+			}
+		}
+	}
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
index 015d44e..e1ba130 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
@@ -549,9 +549,12 @@ public void prune(Set<ObjectId> objectsToKeep) throws IOException,
 				pm.update(1);
 				if (d.length() != 2)
 					continue;
-				File[] entries = new File(objects, d).listFiles();
-				if (entries == null)
+				File dir = new File(objects, d);
+				File[] entries = dir.listFiles();
+				if (entries == null || entries.length == 0) {
+					FileUtils.delete(dir, FileUtils.IGNORE_ERRORS);
 					continue;
+				}
 				for (File f : entries) {
 					checkCancelled();
 					String fName = f.getName();
