Index: tol/btol/polynomial_type/polgra.cpp
===================================================================
--- tol/btol/polynomial_type/polgra.cpp	(revision 6ca24fa0563076490399b06237fbcd607f133d0c)
+++ tol/btol/polynomial_type/polgra.cpp	(revision 59b329dc18a2e64362c1a0f4f27a5fe59afba14b)
@@ -510,9 +510,10 @@
   BPol p1 = BPol::One();
   BPol p2 = BPol::One();
-  BUniformDist u(-1,1);
   BDat a, b, d, m1, m2;
   BPol B0 = BPol::One();
   BPol BP = BPol::X() ^ period;
   BPol factor;
+  BUniformDist u(-1,1);
+
   if(maxInvRootModule>1-2*DEpsilon()) { maxInvRootModule = 1-2*DEpsilon(); }
   if(maxInvRootModule<  2*DEpsilon()) { maxInvRootModule =   2*DEpsilon(); }
@@ -525,6 +526,9 @@
   if(n1)
   {
+    BUniformDist v(0,1);
+    BDat vr = v.Random();
     BDat ur = u.Random();
-    a = maxInvRootModule*ur + minInvRootModule*(1-ur);
+    a = maxInvRootModule*vr + minInvRootModule*(1-vr);
+    if(ur<0) { a*=-1.0; }
     factor = B0-a*BP;
   //Std(BText("\nRandStationary(")+degree+","+period+","+maxInvRootModule+") monome a="+a+"; factor="+factor.Name());
