 		}
 		
 		group.notify(queue: DispatchQueue.main) {
-			completion(.success(()))
+			if errorOccurred {
+				completion(.failure(CloudKitZoneError.unknown))
+			} else {
+				completion(.success(()))
+			}
 		}
 	}
 	

					try? self.database.insertStatuses(syncStatuses)
					group.leave()
				case .failure(let databaseError):
					os_log(.error, log: self.log, "Error occurred while storing articles: %@", databaseError.localizedDescription)
					group.leave()
				}

		let updateableUnstarredArticleIDs = receivedUnstarredArticleIDs.subtracting(pendingStarredStatusArticleIDs)
		let updateableStarredArticleIDs = receivedStarredArticleIDs.subtracting(pendingStarredStatusArticleIDs)

		var errorOccurred = false
		let group = DispatchGroup()
		
		group.enter()
		account?.markAsUnread(updateableUnreadArticleIDs) { result in
			if case .failure(let databaseError) = result {
				errorOccurred = true
				os_log(.error, log: self.log, "Error occurred while storing unread statuses: %@", databaseError.localizedDescription)
			}
			group.leave()
		}
		
		group.enter()
		account?.markAsRead(updateableReadArticleIDs) { result in
			if case .failure(let databaseError) = result {
				errorOccurred = true
				os_log(.error, log: self.log, "Error occurred while storing read statuses: %@", databaseError.localizedDescription)
			}
			group.leave()
		}
		
		group.enter()
		account?.markAsUnstarred(updateableUnstarredArticleIDs) { result in
			if case .failure(let databaseError) = result {
				errorOccurred = true
				os_log(.error, log: self.log, "Error occurred while storing unstarred statuses: %@", databaseError.localizedDescription)
			}
			group.leave()
		}
		
		group.enter()
		account?.markAsStarred(updateableStarredArticleIDs) { result in
			if case .failure(let databaseError) = result {
				errorOccurred = true
				os_log(.error, log: self.log, "Error occurred while storing starred statuses: %@", databaseError.localizedDescription)
			}
			group.leave()
		}
		
