Just to add additional information,
In R21 GetAllHighlevelData() and SetAllHighlevelData() are working as expected for NormalTag, so data are not any more "shifted" and correctly interpreted internally.
See What's New: Fixes:
Fixed an issue where VariableTag.GetAllHighlevelData() and VariableTag.SetAllHighlevelData() used Uint16 instead of int16 for Tnormal.
Fixed an issue where VariableTag.GetAllHighlevelData() returned data were shifted and not complete for Tnormal.
Cheers,
Maxime.