Index: tol/btol/matrix_type/matgra.cpp
===================================================================
--- tol/btol/matrix_type/matgra.cpp	(revision 612d1161bf0d10a37823a767517f724cfd2d5603)
+++ tol/btol/matrix_type/matgra.cpp	(revision 7f11e05f71918886cf184385d9f9fed64e282c4a)
@@ -3193,5 +3193,5 @@
   BInt  i, j, k=0, l;
   BInt  numCol = 0;
-  BInt  numRow = Mat(Arg(1)).Rows();
+  BInt  numRow = 0;
   BInt  numMat = NumArgs();
   for(i=1; i<=numMat; i++)
@@ -3199,5 +3199,9 @@
     BMat& Mi = Mat(Arg(i));
     numCol+=Mi.Columns();
-    if(!numRow) { numRow=Mi.Rows(); }
+    if(numRow<Mi.Rows()) { numRow = Mi.Rows(); }
+  }
+  for(i=1; i<=numMat; i++)
+  {
+    BMat& Mi = Mat(Arg(i));
     if(Mi.Columns() && (Mi.Rows()!=numRow))
     {
@@ -3216,9 +3220,12 @@
   {
     DMat& Mi = dMat(Arg(i));
-    for(j=0; j < Mi.Columns(); j++, k++)
-    {
-      for(l=0; l < numRow; l++)
+    if(Mi.Columns() && (Mi.Rows()==numRow))
+    {
+      for(j=0; j < Mi.Columns(); j++, k++)
       {
-        b2dMat(contens_)(l,k)=Mi(l,j);
+        for(l=0; l < numRow; l++)
+        {
+          b2dMat(contens_)(l,k)=Mi(l,j);
+        }
       }
     }
@@ -3249,5 +3256,5 @@
 {
   BInt  i, j, k=0, l;
-  BInt  numCol = Mat(Arg(1)).Columns();
+  BInt  numCol = 0;
   BInt  numRow = 0;
   BInt  numMat = NumArgs();
@@ -3256,5 +3263,9 @@
     BMat& Mi = Mat(Arg(i));
     numRow+=Mi.Rows();
-    if(!numCol) { numRow=Mi.Columns(); }
+    if(numCol<Mi.Columns()) { numCol = Mi.Columns(); }
+  }
+  for(i=1; i<=numMat; i++)
+  {
+    BMat& Mi = Mat(Arg(i));
     if(Mi.Rows() && (Mi.Columns()!=numCol))
     {
@@ -3273,10 +3284,13 @@
   {
     DMat& Mi = dMat(Arg(i));
-    for(j=0; j < Mi.Rows(); j++, k++) 
-    {
-      for(l=0; l < numCol; l++) 
+    if(Mi.Rows() && (Mi.Columns()==numCol))
+    {
+      for(j=0; j < Mi.Rows(); j++, k++) 
       {
-       b2dMat(contens_)(k,l)=Mi(j,l); 
-      } 
+        for(l=0; l < numCol; l++) 
+        {
+          b2dMat(contens_)(k,l)=Mi(j,l); 
+        } 
+      }
     }
   }
