Index: trunk/MagicSoft/Mars/mhbase/MBinning.cc
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MBinning.cc	(revision 4895)
+++ trunk/MagicSoft/Mars/mhbase/MBinning.cc	(revision 4920)
@@ -72,7 +72,8 @@
 
 }
+
 void MBinning::SetEdges(const TAxis &axe)
 {
-    const TArrayD &arr = *((TAxis&)axe).GetXbins();
+    const TArrayD &arr = *axe.GetXbins();
     if (arr.GetSize()>0)
     {
@@ -82,4 +83,20 @@
 
     SetEdges(axe.GetNbins(), axe.GetXmin(), axe.GetXmax());
+}
+
+void MBinning::AddEdge(Axis_t up)
+{
+    const Int_t n = fEdges.GetSize();
+
+    if (up<=fEdges[n-1])
+    {
+        *fLog << warn << dbginf << "WARNING - New upper edge not greater than old upper edge... ignored." << endl;
+        return;
+    }
+
+    fEdges.Set(n+1);
+    fEdges[n] = up;
+
+    fType = kIsUserArray;
 }
 
@@ -111,8 +128,8 @@
 void MBinning::SetEdges(const Int_t nbins, const Axis_t lo, Axis_t up)
 {
-    const Double_t binsize = (up-lo)/nbins;
+    const Double_t binsize = nbins<=0 ? 0 : (up-lo)/nbins;
     fEdges.Set(nbins+1);
     for (int i=0; i<=nbins; i++)
-            fEdges[i] = binsize*i + lo;
+        fEdges[i] = binsize*i + lo;
 
     fType = kIsLinear;
Index: trunk/MagicSoft/Mars/mhbase/MBinning.h
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MBinning.h	(revision 4895)
+++ trunk/MagicSoft/Mars/mhbase/MBinning.h	(revision 4920)
@@ -79,4 +79,6 @@
     Double_t *GetEdges() const { return (Double_t*)fEdges.GetArray(); }
 
+    void AddEdge(Axis_t up);
+
     Bool_t IsLinear() const { return fType==kIsLinear; }
     Bool_t IsLogarithmic() const { return fType==kIsLogarithmic; }
