 						if !value {
 							// first `false` value emits false & completes
 							observer(.success(false))
+						} else {
+							emitted[item.offset] = true
 						}
-						emitted[item.offset] = true
 					case .error(let error):
 						observer(.error(error))
 					case .completed:
 						completed += 1
-						if completed == collection.count {
-							// if all emitted at least one `true`, emit true otherwise just complete
-							if emitted.reduce(true, { $0 && $1 }) {
-								observer(.success(true))
-							} else {
-								observer(.completed)
-							}
+						guard completed == collection.count else { return }
+						// if all emitted at least one `true`, emit true otherwise just complete
+						if emitted.reduce(true, { $0 && $1 }) {
+							observer(.success(true))
+						} else {
+							observer(.completed)
 						}
 					}
 

					if !value {
						// first `false` value emits false & completes
						observer(.success(false))
					}
					gotValue = true
				case .error(let error):
					observer(.error(error))
				case .completed:


extension ObservableType where E == Bool {
	/**
	Emits a single Bool value indicating whether or not a Bool sequence emits only `true` values.

	If a `false` value is emitted, the resulting sequence immediately completes with a `false` result.
	If only `true` values are emitted, the resulting sequence completes with a `true` result once the
