diff --git a/DDCore/src/Primitives.cpp b/DDCore/src/Primitives.cpp
index e0e0f334b846bcfce2dc2f1309900cf598265fb4..722441b244c4f152675715cb12f449f9cc647af4 100644
--- a/DDCore/src/Primitives.cpp
+++ b/DDCore/src/Primitives.cpp
@@ -206,8 +206,8 @@ unsigned long long int dd4hep::detail::hash64(const std::string& key)  {
 
 /// 16 bit hash function
 unsigned short dd4hep::detail::hash16(const void* key, std::size_t len)   {
-  unsigned int value = hash32(key, len);
-  return *(unsigned short*)&value;
+  unsigned short value = (unsigned short)hash32(key, len);
+  return value;
 }
 
 /// 8 bit hash function