diff --git a/DDSegmentation/include/DDSegmentation/Segmentation.h b/DDSegmentation/include/DDSegmentation/Segmentation.h
index fc8d2504acd6c3c5accb1e6bab99bf0797261d62..c1d5c730ec134b9f407a1e9787b254e3895f5ac8 100644
--- a/DDSegmentation/include/DDSegmentation/Segmentation.h
+++ b/DDSegmentation/include/DDSegmentation/Segmentation.h
@@ -50,20 +50,20 @@ public:
 		return _decoder->fieldDescription();
 	}
 	/// access the segmentation name
-	const std::string& name() const {
+	std::string name() const {
 		return _name;
 	}
 	/// Set the segmentation name
-	void setName(const std::string& value)  {
-	  _name = value;
+	void setName(const std::string& value) {
+		_name = value;
 	}
 	/// access the segmentation type
-	const std::string& type() const {
+	std::string type() const {
 		return _type;
 	}
 	/// Set the segmentation type
 	void setType(const std::string& value)  {
-	  _type = value;
+		_type = value;
 	}
 	/// access the underlying decoder
 	BitField64* decoder() {
@@ -79,12 +79,17 @@ protected:
 	mutable BitField64* _decoder;
 	/// keeps track of the decoder ownership
 	bool _ownsDecoder;
-	/// the segmentation type
-	std::string _type;
 	/// the segmentation name
 	std::string _name;
-        // M.Frank: Temp fix for compilation
-        bool _isLocal;
+	/// the segmentation type
+	std::string _type;
+	/// distinguish between local and global coordinate systems
+	bool _isLocal;
+
+	/// helper method to convert a bin number to a 1D position
+	double binToPosition(long64 bin, double cellSize, double offset = 0.) const;
+	/// helper method to convert a 1D position to a cell ID
+	int positionToBin(double position, double cellSize, double offset = 0.) const;
 };
 
 } /* namespace DDSegmentation */
diff --git a/DDSegmentation/src/BitField64.cpp b/DDSegmentation/src/BitField64.cpp
index c98bd659ed25308a0caabe31cf82ab735738268b..1deac192d1e09333caf91a02d513cdbbd12f4776 100644
--- a/DDSegmentation/src/BitField64.cpp
+++ b/DDSegmentation/src/BitField64.cpp
@@ -72,15 +72,22 @@ namespace DDSegmentation {
     }
   }
 
-  long64 BitFieldValue::value(long64 id) const {       
+  long64 BitFieldValue::value(long64 id) const { 
+      
     if(  _isSigned   ) {
-      long64 val = (id & _mask) >> _offset ;
-      if( (val  & (1LL << (_width - 1))) != 0 ) { // negative value
-	val -= (1LL << _width);
+
+      long64 val = ( id & _mask ) >> _offset ;
+      
+      if( ( val  & ( 1LL << ( _width - 1 ) ) ) != 0 ) { // negative value
+	  
+	val -= ( 1LL << _width );
       }
+	
       return val ;
-    } else {
-      return  (id & _mask) >> _offset ;
+
+    } else { 
+      
+      return  ( id & _mask ) >> _offset ;
     }
   }