Index: tol/btol/vmatrix_type/vmatgra.cpp
===================================================================
--- tol/btol/vmatrix_type/vmatgra.cpp	(revision 2b448e9c4dc45d3ef643d97b5185084039086e7a)
+++ tol/btol/vmatrix_type/vmatgra.cpp	(revision 516e91c7aaba3a972d8d24b66ef89fa3013d6021)
@@ -202,4 +202,22 @@
   if(Arg(2)) { chop=Real(Arg(2)); }
   contens_=VMat(Arg(1)).NonNullCells(chop);
+}
+
+//--------------------------------------------------------------------
+DeclareContensClass(BDat, BDatTemporary, BDatStoredCells);
+DefExtOpr(1, BDatStoredCells, "VStoredCells", 1, 1,
+  "VMatrix",
+  "(VMatrix V)",
+  I2("Returns the number of stored cells of a virtual matrix.",
+     "Devuelve el numero de celdas almacenadas de una matriz virtual."),
+    BOperClassify::MatrixAlgebra_);
+//--------------------------------------------------------------------
+void BDatStoredCells::CalcContens()
+//--------------------------------------------------------------------
+{
+  const double *x;
+  int nzmax;
+  VMat(Arg(1)).StoredData(x,nzmax);
+  contens_=nzmax;
 }
 
@@ -447,4 +465,24 @@
   assert(contens_.Check());
 }
+
+//--------------------------------------------------------------------
+DeclareContensClass(BVMat, BVMatTemporary, BVMatPack);
+DefExtOpr(1, BVMatPack, "Pack", 1, 1, 
+  "VMatrix",
+  "(VMatrix data)",
+  I2("Packs an sparse matrix to be stored in the minimum posible size."
+     "It has no effect over non sparse matrices.",
+     "Empaqueta una matriz sparse para que ocupe el mínimo espacio posible."
+     "No tiene ningún efecto sobre matrices no sparse."),
+BOperClassify::MatrixAlgebra_);
+//--------------------------------------------------------------------
+void BVMatPack::CalcContens()
+//--------------------------------------------------------------------
+{
+  contens_.Copy(VMat(Arg(1)));
+  contens_.Pack();
+  assert(contens_.Check());
+}
+
 
 //--------------------------------------------------------------------
@@ -1117,8 +1155,10 @@
 //--------------------------------------------------------------------
 {
-  BVMat::Drop(VMat(Arg(1)),Real(Arg(2)),contens_);
-  assert(contens_.Check());
-}
-
+  contens_.Copy(VMat(Arg(1)));
+  double drop = 0;
+  if(Arg(2)) { drop = Real(Arg(2)); }
+  contens_.Drop(drop);
+  assert(contens_.Check());
+}
 
 #define DecMonaryF00(FUN,ENGLISH,SPANISH)                                      \
