diff --git a/apps/files/js/filesummary.js b/apps/files/js/filesummary.js
index 11cb4f8ee455f87ed61fda36f1a2cc57d186d6d6..a4cefe692a89b7edbceac888929026ce869e1507 100644
--- a/apps/files/js/filesummary.js
+++ b/apps/files/js/filesummary.js
@@ -40,7 +40,8 @@
 			totalFiles: 0,
 			totalDirs: 0,
 			totalSize: 0,
-			filter:''
+			filter:'',
+			sumIsPending:false
 		},
 
 		/**
@@ -58,7 +59,12 @@
 			else {
 				this.summary.totalFiles++;
 			}
-			this.summary.totalSize += parseInt(file.size, 10) || 0;
+			var size = parseInt(file.size, 10) || 0;
+			if (size >=0) {
+				this.summary.totalSize += size;
+			} else {
+				this.summary.sumIsPending = true;
+			}
 			if (!!update) {
 				this.update();
 			}
@@ -78,7 +84,10 @@
 			else {
 				this.summary.totalFiles--;
 			}
-			this.summary.totalSize -= parseInt(file.size, 10) || 0;
+			var size = parseInt(file.size, 10) || 0;
+			if (size >=0) {
+				this.summary.totalSize -= size;
+			}
 			if (!!update) {
 				this.update();
 			}
@@ -103,7 +112,8 @@
 				totalDirs: 0,
 				totalFiles: 0,
 				totalSize: 0,
-				filter: this.summary.filter
+				filter: this.summary.filter,
+				sumIsPending: false
 			};
 
 			for (var i = 0; i < files.length; i++) {
@@ -117,7 +127,12 @@
 				else {
 					summary.totalFiles++;
 				}
-				summary.totalSize += parseInt(file.size, 10) || 0;
+				var size = parseInt(file.size, 10) || 0;
+				if (size >=0) {
+					summary.totalSize += size;
+				} else {
+					summary.sumIsPending = true;
+				}
 			}
 			this.setSummary(summary);
 		},
@@ -160,7 +175,8 @@
 			// Substitute old content with new translations
 			$dirInfo.html(n('files', '%n folder', '%n folders', this.summary.totalDirs));
 			$fileInfo.html(n('files', '%n file', '%n files', this.summary.totalFiles));
-			this.$el.find('.filesize').html(OC.Util.humanFileSize(this.summary.totalSize));
+			var fileSize = this.summary.sumIsPending ? t('files', 'Pending') : OC.Util.humanFileSize(this.summary.totalSize);
+			this.$el.find('.filesize').html(fileSize);
 
 			// Show only what's necessary (may be hidden)
 			if (this.summary.totalDirs === 0) {
@@ -194,10 +210,9 @@
 			var summary = this.summary;
 			var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs);
 			var fileInfo = n('files', '%n file', '%n files', summary.totalFiles);
-			if (this.summary.filter === '') {
-				var filterInfo = '';
-			} else {
-				var filterInfo = ' ' + n('files', 'matches \'{filter}\'', 'match \'{filter}\'', summary.totalFiles + summary.totalDirs, {filter: summary.filter});
+			var filterInfo = '';
+			if (this.summary.filter !== '') {
+				filterInfo = ' ' + n('files', 'matches \'{filter}\'', 'match \'{filter}\'', summary.totalFiles + summary.totalDirs, {filter: summary.filter});
 			}
 
 			var infoVars = {
@@ -208,7 +223,8 @@
 			// don't show the filesize column, if filesize is NaN (e.g. in trashbin)
 			var fileSize = '';
 			if (!isNaN(summary.totalSize)) {
-				fileSize = '<td class="filesize">' + OC.Util.humanFileSize(summary.totalSize) + '</td>';
+				fileSize = summary.sumIsPending ? t('files', 'Pending') : OC.Util.humanFileSize(summary.totalSize);
+				fileSize = '<td class="filesize">' + fileSize + '</td>';
 			}
 
 			var info = t('files', '{dirs} and {files}', infoVars, null, {'escape': false});
diff --git a/apps/files/tests/js/filesummarySpec.js b/apps/files/tests/js/filesummarySpec.js
index 4c53b7d8b3a28a562a2d139235341e66723f75cc..ae5ff95fc0cd9e63209c6d06fb088ac6e5a903ec 100644
--- a/apps/files/tests/js/filesummarySpec.js
+++ b/apps/files/tests/js/filesummarySpec.js
@@ -148,4 +148,37 @@ describe('OCA.Files.FileSummary tests', function() {
 		expect(s.summary.totalFiles).toEqual(1);
 		expect(s.summary.totalSize).toEqual(127903);
 	});
+	it('properly sum up pending folder sizes after adding', function() {
+		var s = new FileSummary($container);
+		s.setSummary({
+			totalDirs: 0,
+			totalFiles: 0,
+			totalSize: 0
+		});
+		s.add({type: 'dir', size: -1});
+		s.update();
+		expect($container.hasClass('hidden')).toEqual(false);
+		expect($container.find('.info').text()).toEqual('1 folder and 0 files');
+		expect($container.find('.filesize').text()).toEqual('Pending');
+		expect(s.summary.totalDirs).toEqual(1);
+		expect(s.summary.totalFiles).toEqual(0);
+		expect(s.summary.totalSize).toEqual(0);
+	});
+	it('properly sum up pending folder sizes after remove', function() {
+		var s = new FileSummary($container);
+		s.setSummary({
+			totalDirs: 0,
+			totalFiles: 0,
+			totalSize: 0
+		});
+		s.add({type: 'dir', size: -1});
+		s.remove({type: 'dir', size: -1});
+		s.update();
+		expect($container.hasClass('hidden')).toEqual(true);
+		expect($container.find('.info').text()).toEqual('0 folders and 0 files');
+		expect($container.find('.filesize').text()).toEqual('0 B');
+		expect(s.summary.totalDirs).toEqual(0);
+		expect(s.summary.totalFiles).toEqual(0);
+		expect(s.summary.totalSize).toEqual(0);
+	});
 });