Skip to content

Commit cbda369

Browse files
committed
Fix scaling of missing values in encode-mtg2 action
Missing values should not be scaled
1 parent 81e662a commit cbda369

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

src/multio/action/encode-mtg2/EncodeMtg2.cc

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,18 @@ void EncodeMtg2::executeImpl(Message msg) {
8080
ASSERT(values);
8181

8282
const auto scaleFactor = *(mappingResult->valuesScaleFactor);
83-
std::transform(values, values + size, values,
84-
[&](const Precision& value) -> Precision { return value * scaleFactor; });
83+
84+
if (miscRec.missingValue.isSet()) {
85+
const double missing = miscRec.missingValue.get();
86+
std::transform(values, values + size, values, [&](const Precision& value) -> Precision {
87+
return static_cast<Precision>(value == missing ? missing : value * scaleFactor);
88+
});
89+
}
90+
else {
91+
std::transform(values, values + size, values, [&](const Precision& value) -> Precision {
92+
return static_cast<Precision>(value * scaleFactor);
93+
});
94+
}
8595
}
8696

8797
// Call the GRIB2 encoder in metkit

0 commit comments

Comments
 (0)