Index: tol/btol/vmatrix_type/tol_bvmat_bsr_impl.h
===================================================================
--- tol/btol/vmatrix_type/tol_bvmat_bsr_impl.h	(revision 9d1642ec019a61c5a431016d8f268dc880cff23b)
+++ tol/btol/vmatrix_type/tol_bvmat_bsr_impl.h	(revision e4b3a12b544ee83ebb2a7e397875a6bb170ba402)
@@ -395,5 +395,5 @@
   void action(const std::string& str) const
   {
-    if(str=="?")
+    if((str=="?")||(str=="-1.#INF"))
     {
       action(BDat::NegInf());
@@ -504,5 +504,5 @@
   void action(const std::string& str) const
   {
-    if(str=="?")
+    if((str=="?")||(str=="+1.#INF")||(str=="1.#INF"))
     {
       action(BDat::PosInf());
Index: tol/btol/vmatrix_type/vmat_bsr_joint.cpp
===================================================================
--- tol/btol/vmatrix_type/vmat_bsr_joint.cpp	(revision 9d1642ec019a61c5a431016d8f268dc880cff23b)
+++ tol/btol/vmatrix_type/vmat_bsr_joint.cpp	(revision e4b3a12b544ee83ebb2a7e397875a6bb170ba402)
@@ -62,5 +62,5 @@
       variantSigma, constantSigma, covariance, 
       noiseName, noisePosition,
-      posSign, negSign, unknown, product,
+      posSign, negSign, unknown, infinite, posInf, negInf, knownOrInfReal, product,
       initValue, like, power2, member, nonLinearFilters,
       noiseSize, normalDist, normalNu, eq, le, ge, tolExpression,
@@ -158,4 +158,17 @@
       unknown = str_p("?")
         ;
+      infinite = str_p("1.#INF")
+        ;
+      posInf = (eps_p | posSign) >> infinite 
+        ;
+      negInf = (negSign) >> infinite 
+        ;
+      knownReal =
+        real_p[assign_a(s.realValue)]
+        ;
+      knownOrInfReal = knownReal | 
+        posInf[assign_a(s.realValue,BDat::PosInf())]| 
+        negInf[assign_a(s.realValue,BDat::NegInf())]
+        ;
       product = str_p("*")
         ;
@@ -247,12 +260,4 @@
         | 
         negSign[assign_neg_sign_to_ine_term_]
-        ;
-      knownReal =
-        real_p[assign_a(s.realValue)]
-        ;
-      unkOrReal =
-        unknown[assign_a(s.realValue,BDat::Nan())]
-        |
-        knownReal
         ;
       knownURealEquTerm =
@@ -297,7 +302,7 @@
                       str_p("Uniform")[assign_a(s.mis.info.prior,"Uniform")] >> 
                       openParenthesys >>
-                      ((str_p("?")|real_p)[assign_missing_min_] | error_badNumber) >>
+                      ((str_p("?")|str_p("-1.#INF")|real_p)[assign_missing_min_] | error_badNumber) >>
                       argumentSeparator >>
-                      ((str_p("?")|real_p)[assign_missing_max_] | error_badNumber) >>
+                      ((str_p("?")|str_p("+1.#INF")|str_p("1.#INF")|real_p)[assign_missing_max_] | error_badNumber) >>
                       closeParenthesys
                     ) 
@@ -328,7 +333,7 @@
                   (real_p[assign_a(s.mis.info.sigma2)] | error_badNumber)>>
                   argumentSeparator >>
-                  ((str_p("?")|real_p)[assign_missing_min_] | error_badNumber) >>
+                  ((str_p("?")|str_p("-1.#INF")|real_p)[assign_missing_min_] | error_badNumber) >>
                   argumentSeparator >>
-                  ((str_p("?")|real_p)[assign_missing_max_] | error_badNumber) >>
+                  ((str_p("?")|str_p("+1.#INF")|str_p("1.#INF")|real_p)[assign_missing_max_] | error_badNumber) >>
                   closeParenthesys
                 )
Index: tol/btol/vmatrix_type/vmat_bsr_primary.cpp
===================================================================
--- tol/btol/vmatrix_type/vmat_bsr_primary.cpp	(revision 9d1642ec019a61c5a431016d8f268dc880cff23b)
+++ tol/btol/vmatrix_type/vmat_bsr_primary.cpp	(revision e4b3a12b544ee83ebb2a7e397875a6bb170ba402)
@@ -62,5 +62,5 @@
       variantSigma, constantSigma, covariance, 
       noiseName, noisePosition,
-      posSign, negSign, unknown, product,
+      posSign, negSign, unknown, infinite, posInf, negInf, knownOrInfReal, product,
       initValue, like, power2, member, nonLinearFilters,
       noiseSize, normalDist, normalNu, eq, le, ge, tolExpression,
@@ -155,4 +155,27 @@
       unknown = str_p("?")
         ;
+      infinite = str_p("1.#INF")
+        ;
+      posInf = (eps_p | posSign) >> infinite 
+        ;
+      negInf = (negSign) >> infinite 
+        ;
+      knownReal =
+        real_p[assign_a(s.realValue)]
+        ;
+      knownOrInfReal = knownReal | 
+        posInf[assign_a(s.realValue,BDat::PosInf())]| 
+        negInf[assign_a(s.realValue,BDat::NegInf())]
+        ;
+      unkOrReal =
+        unknown[assign_a(s.realValue,BDat::Nan())]
+        |
+        knownReal
+        ;
+      unkOrRealInitValue =
+        unknown[assign_a(s.var.info.initValue,BDat::Nan())]
+        |
+        real_p[assign_a(s.var.info.initValue)]
+        ;
       product = str_p("*")
         ;
@@ -224,17 +247,4 @@
           | eps_p
         )
-        ;
-      knownReal =
-        real_p[assign_a(s.realValue)]
-        ;
-      unkOrReal =
-        unknown[assign_a(s.realValue,BDat::Nan())]
-        |
-        knownReal
-        ;
-      unkOrRealInitValue =
-        unknown[assign_a(s.var.info.initValue,BDat::Nan())]
-        |
-        real_p[assign_a(s.var.info.initValue)]
         ;
       variable =  (( 
@@ -282,7 +292,7 @@
                       str_p("Uniform")[assign_a(s.mis.info.prior,"Uniform")] >> 
                       openParenthesys >>
-                      ((str_p("?")|real_p)[assign_missing_min_] | error_badNumber) >>
+                      ((str_p("?")|str_p("-1.#INF")|real_p)[assign_missing_min_] | error_badNumber) >>
                       argumentSeparator >>
-                      ((str_p("?")|real_p)[assign_missing_max_] | error_badNumber) >>
+                      ((str_p("?")|str_p("+1.#INF")|str_p("1.#INF")|real_p)[assign_missing_max_] | error_badNumber) >>
                       closeParenthesys
                     ) 
@@ -313,7 +323,7 @@
                   (real_p[assign_a(s.mis.info.sigma2)] | error_badNumber)>>
                   argumentSeparator >>
-                  ((str_p("?")|real_p)[assign_missing_min_] | error_badNumber) >>
+                  ((str_p("?")|str_p("-1.#INF")|real_p)[assign_missing_min_] | error_badNumber) >>
                   argumentSeparator >>
-                  ((str_p("?")|real_p)[assign_missing_max_] | error_badNumber) >>
+                  ((str_p("?")|str_p("+1.#INF")|str_p("1.#INF")|real_p)[assign_missing_max_] | error_badNumber) >>
                   closeParenthesys
                 )
