diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c
index b3ef2fb..394291f 100644
--- a/src/hw_ostc_parser.c
+++ b/src/hw_ostc_parser.c
@@ -767,6 +767,8 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call
 					return DC_STATUS_DATAFORMAT;
 				}
 
+				unsigned int ppo2[3] = {0};
+				unsigned int count = 0;
 				unsigned int value = 0;
 				switch (info[i].type) {
 				case 0: // Temperature (0.1 ��C).
@@ -788,12 +790,18 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call
 				case 3: // ppO2 (0.01 bar).
 					for (unsigned int j = 0; j < 3; ++j) {
 						if (info[i].size == 3) {
-							value = data[offset + j];
+							ppo2[j] = data[offset + j];
 						} else {
-							value = data[offset + j * 3];
+							ppo2[j] = data[offset + j * 3];
+						}
+						if (ppo2[j] != 0)
+							count++;
+					}
+					if (count) {
+						for (unsigned int j = 0; j < 3; ++j) {
+							sample.ppo2 = ppo2[j] / 100.0;
+							if (callback) callback (DC_SAMPLE_PPO2, sample, userdata);
 						}
-						sample.ppo2 = value / 100.0;
-						if (callback) callback (DC_SAMPLE_PPO2, sample, userdata);
 					}
 					break;
 				case 5: // CNS
