Index: tol/bmath/bprdist/prd.cpp
===================================================================
--- tol/bmath/bprdist/prd.cpp	(revision b50906ada0664f74383ca22cbdcd39583f709af6)
+++ tol/bmath/bprdist/prd.cpp	(revision b791e9d057a3f9285b5089211f4de73a46ba0a69)
@@ -774,5 +774,5 @@
     fA_  = NonTruncated().Dens( A_); 
     FA_  = NonTruncated().Dist( A_); 
-    F1A_ = NonTruncated().Dist(-A_); 
+    F1A_ = 1.0-NonTruncated().Dist(A_); 
   }   
   if(B_>=NonTruncated().Max()) 
@@ -787,8 +787,8 @@
     fB_  = NonTruncated().Dens( B_); 
     FB_  = NonTruncated().Dist( B_); 
-    F1B_ = NonTruncated().Dist(-B_); 
+    F1B_ = 1.0-NonTruncated().Dist(B_); 
   }   
-  useLeft_ = (A_<=NonTruncated().Average())!=0;
-  if(A_<=0)
+  useLeft_ = fB_ <= fA_;
+  if(useLeft_)
   {
     FAB_ = FB_-FA_;
@@ -813,5 +813,11 @@
   else if(x>B_) { return(1); }
   else if(!FAB_) { return((x-A_)/(B_-A_)); }
-  else { return(NonTruncated().Dist(x)/FAB_); } 
+  else 
+  { 
+    BDat Fx = NonTruncated().Dist(x);
+    return((Fx-FA_)/FAB_); 
+  } 
+//else if(useLeft_) { return((NonTruncated().Dist(x)-FA_)/FAB_); } 
+//else              { return(1.0-(FB_-NonTruncated().Dist(x))/FAB_); } 
 }
 
@@ -846,6 +852,6 @@
     }
   }
-  if(useLeft_) { return( NonTruncated().Inverse( FA_+prob*FAB_)); }
-  else         { return(-NonTruncated().Inverse(F1A_-prob*FAB_)); }
+  if(useLeft_) { return(NonTruncated().Inverse(FA_+     prob *FAB_)); }
+  else         { return(NonTruncated().Inverse(FB_-(1.0-prob)*FAB_)); }
 }
 
