         if (cvar_poisson)
         {
            fputs("   double Lambda;\n",textfile);
            fputs("   double M;\n",textfile);
            fputs("   double PMF;\n",textfile);
            fputs("   double CMF;\n",textfile);
            fputs("   int rv;\n",textfile);
            fputs("   double drv;\n",textfile);
            fputs("   double trg;\n",textfile);
            fputs("   char *lcl_value;\n",textfile);
            fprintf(textfile,"   char work[32];\n");
            fprintf(textfile,"   char *i;\n\n");
            fputs("   trg = RANDD;\n",textfile);
            fputs("   DGLSystem::Begsav();\n",textfile);
            fprintf(textfile,"   DGLSystem::interpret(\"%s\");\n",PoissonSel);
            fputs("   lcl_value = DGLSystem::Endsav();\n",textfile);
            fputs("   Lambda = strtod(lcl_value,NULL);\n",textfile);
            fputs("   free(lcl_value);\n",textfile);
            fputs("   M = exp(-Lambda);\n",textfile);
            fputs("   PMF = M;\n",textfile);
            fputs("   CMF = M;\n",textfile);
            fputs("   for (rv=0,drv=1.0 ; ; rv++,drv+=1.0)\n",textfile);
            fputs("   {\n",textfile);
            fputs("      if (trg <= CMF)\n",textfile);
            fputs("      {\n",textfile);
            fputs("         break;\n",textfile);
            fputs("      }\n",textfile);
            fputs("      PMF = PMF*Lambda;\n",textfile);
            fputs("      PMF /= drv;\n",textfile);
            fputs("      CMF += PMF;\n",textfile);
            fputs("   }\n",textfile);
            fprintf(textfile,"   %s = rv;\n",CvarName);
         }
         else if (cvar_geometric)
         {
            fputs("   double PSuccess;\n",textfile);
            fputs("   char *lcl_value;\n",textfile);
            fprintf(textfile,"   char * x;\n");
            fprintf(textfile,"   char work[32];\n");
            fprintf(textfile,"   int i;\n\n");
            fputs("   DGLSystem::Begsav();\n",textfile);
            fprintf(textfile,"   DGLSystem::interpret(\"%s\");\n",GeometricSel);
            fputs("   lcl_value = DGLSystem::Endsav();\n",textfile);
            fputs("   PSuccess = strtod(lcl_value,NULL);\n",textfile);
            fputs("   free(lcl_value);\n",textfile);
            fputs("   for (i=0 ;  ; i++)\n",textfile);
            fputs("   {\n",textfile);
            fputs("      if (RANDD<=PSuccess)\n",textfile);
            fputs("      {\n",textfile);
            fputs("         break;\n",textfile);
            fputs("      }\n",textfile);
            fputs("   }\n",textfile);
            fputs("   i++;\n",textfile);
            fprintf(textfile,"   %s = i;\n",CvarName);
         }
         else if (cvar_binomial)
         {
            int RootID;
            if (BinomialParm > 1000)
            {
               yyerror("Binomial Trial Count cannot exceed 1000");
               return;
            }
            if (BinomialProb == 0.5 && BinomialParm < 30)
            {
               int * PMF = MakeBinomialPMF(BinomialParm);
               RootID = MakeICDFTree(PMF,BinomialParm+1);
               free(PMF);
               fprintf(textfile,"   %s = DglSearchTree::SearchNode%8.8d.Find(RAND1(%d));\n",CvarName,RootID,1<<BinomialParm);
            }
            else
            {
               double * PMF = MakeBinomialPMFD(BinomialParm,BinomialProb);
               RootID = MakeDCDFTree(PMF,BinomialParm+1);
               free(PMF);
               fprintf(textfile,"   %s = DglSearchTree::SearchNode%8.8d.Find(RANDD);\n",CvarName,RootID);
            }
         }
         else if (cvar_hyper)
         {
            int RootID;
            int Total;
            int * PMF = MakeHyperPMF(Hyper1,Hyper2,Hyper3);
            Total= 0;
            for (int i=0 ; i<=Hyper3 ; i++)
            {
               Total += PMF[i];
            }
            RootID = MakeICDFTree(PMF,Hyper3+1);
            free(PMF);
            fprintf(textfile,"   %s = DglSearchTree::SearchNode%8.8d.Find(RAND1(%d));\n",CvarName,RootID,Total);
         }
         else if (cvar_power)
         {
            int Total,RootID,Size;
            int * PMF = MakePowerLawPMF(PLDist1,PLDist2,Size);
            Total= 0;
            for (int i=0 ; i<Size ; i++)
            {
               Total += PMF[i];
            }
            RootID = MakeICDFTree(PMF,Size);
            free(PMF);
            fprintf(textfile,"   %s = DglSearchTree::SearchNode%8.8d.Find(RAND1(%d));\n",CvarName,RootID,Total);
         }
         else if (cvar_beta)
         {
            double a=BVa,b=BVb; // to avoid changing the expressions below.
            double Alpha = a+b;
            double Beta;
            if (min(a,b)<=1)
            {
               Beta = max(1/a,1/b);
            }
            else
            {
               Beta = sqrt((Alpha-2)/((2*a*b)-Alpha));
            }
            double Gamma = a + (1/Beta);
            fprintf(textfile,"   double V,W,C1,C2,U1,U2,X;\n");
            fprintf(textfile,"   bool Done = false;\n");
            fprintf(textfile,"   char work[30];\n");
            fprintf(textfile,"   while (!Done)\n");
            fprintf(textfile,"   {\n");
            fprintf(textfile,"      U1 = RANDD;\n");
            fprintf(textfile,"      U2 = RANDD;\n");
            fprintf(textfile,"      V = %.15g*log(U1/(1-U1));\n",Beta);
            fprintf(textfile,"      W = %.15g * exp(V);\n",Alpha);
            fprintf(textfile,"      C1 = (%.15g * log(%.15g/(%.15g+W))) + %.15g*V - 1.3862944;\n",Alpha,Alpha,b,Gamma);
            fprintf(textfile,"      C2 = log(U1*U1*U2);\n");
            fprintf(textfile,"      if (C1>=C2)\n");
            fprintf(textfile,"      {\n");
            fprintf(textfile,"         break;\n");
            fprintf(textfile,"      }\n");
            fprintf(textfile,"   }\n");
            fprintf(textfile,"   %s = W/(%.15g+W);\n",CvarName,b);
         }
         else if (cvar_neg)
         {
            fputs("   double PSuccess;\n",textfile);
            fputs("   int NumFail,FailCount;\n",textfile);
            fputs("   char *lcl_value;\n",textfile);
            fprintf(textfile,"   int SuccessCount;\n\n");
            fputs("   Begsav();\n",textfile);
            fprintf(textfile,"   interpret(\"%s\");\n",NegBinSel);
            fputs("   lcl_value = Endsav();\n",textfile);
            fputs("   PSuccess = strtod(lcl_value,NULL);\n",textfile);
            fputs("   free(lcl_value);\n",textfile);
            fputs("   Begsav();\n",textfile);
            fprintf(textfile,"   interpret(\"%s\");\n",NegBinNum);
            fputs("   lcl_value = Endsav();\n",textfile);
            fputs("   NumFail = strtol(lcl_value,NULL,0);\n",textfile);
            fputs("   FailCount = strtol(lcl_value,NULL,0);\n",textfile);
            fputs("   free(lcl_value);\n",textfile);
            fputs("   for ( ;  ; )\n",textfile);
            fputs("   {\n",textfile);
            fputs("      if (RANDD>PSuccess)\n",textfile);
            fputs("      {\n",textfile);
            fputs("         FailCount++;\n",textfile);
            fputs("         if (FailCount>=NumFail)\n",textfile);
            fputs("         {\n",textfile);
            fputs("            break;\n",textfile);
            fputs("         }\n",textfile);
            fputs("      }\n",textfile);
            fputs("      else\n",textfile);
            fputs("      {\n",textfile);
            fputs("         SuccessCount++;\n",textfile);
            fputs("      }\n",textfile);
            fputs("   }\n",textfile);
            fprintf(textfile,"   %s = SuccessCount;\n",CvarName);
         }
         else if (cvar_gamma)
         {
            if (GammaAlpha > 1.0)
            {
               double ai = sqrt((2.0*GammaAlpha)-1.0);
               double a = 1.0/ai;
               double b = GammaAlpha-log(4.0);
               double c = GammaAlpha + ai;
               fprintf(textfile,"   double U1,U2,V,X,C1,C2;\n\n");
               fprintf(textfile,"   for (;;)\n");
               fprintf(textfile,"   {\n");
               fprintf(textfile,"      U1 = RANDD;\n");
               fprintf(textfile,"      U2 = RANDD;\n");
               fprintf(textfile,"      V = %.15g*log(U1/(1.0-U1));\n",a);
               fprintf(textfile,"      X = %.15g*exp(V);\n",GammaAlpha);
               fprintf(textfile,"      C1 = %.15g+(%.15g*V)-X;\n",b,c);
               fprintf(textfile,"      C2 = log(U1*U1*U2);\n");
               fprintf(textfile,"      if (C1 >= C2)\n");
               fprintf(textfile,"      {\n");
               fprintf(textfile,"         break;\n");
               fprintf(textfile,"      }\n");
               fprintf(textfile,"   }\n");
               fprintf(textfile,"   %s = X;\n",CvarName);
               fprintf(textfile,"}\n");
            }
            else
            {
               double e = exp(1.0);
               double b = (e+GammaAlpha)/e;
               fprintf(textfile,"   double X;\n\n");
               fprintf(textfile,"   for (;;)\n");
               fprintf(textfile,"   {\n");
               fprintf(textfile,"      double UStar;\n");
               fprintf(textfile,"      double U = RANDD;\n");
               fprintf(textfile,"      double P = %.15g*U;\n",b);
               fprintf(textfile,"      if (P<=1.0)\n");
               fprintf(textfile,"      {\n");
               fprintf(textfile,"         X = pow(P,1.0/%.15g);\n",GammaAlpha);
               fprintf(textfile,"         UStar = RANDD;\n");
               fprintf(textfile,"         if (UStar <= exp(-X))\n");
               fprintf(textfile,"         {\n");
               fprintf(textfile,"            break;\n");
               fprintf(textfile,"         }\n");
               fprintf(textfile,"      }\n");
               fprintf(textfile,"      else\n");
               fprintf(textfile,"      {\n");
               fprintf(textfile,"         X = -log((%.15g-P)/%.15g);\n",b,GammaAlpha);
               fprintf(textfile,"         UStar = RANDD;\n");
               fprintf(textfile,"         if (UStar <= pow(X,%.15g-1.0))\n",GammaAlpha);
               fprintf(textfile,"         {\n");
               fprintf(textfile,"            break;\n");
               fprintf(textfile,"         }\n");
               fprintf(textfile,"      }\n");
               fprintf(textfile,"   }\n");
               fprintf(textfile,"   %s = X;\n",CvarName);
               fprintf(textfile,"}\n");
            }
         }
         else if (cvar_exp)
         {
            dozigexp();
            fprintf(textfile,"   double Val;\n");
            fprintf(textfile,"   char Work[40];\n");
            fprintf(textfile,"   Val = DGLSystem::zigexp();\n");
            if (ExpvMult != 1.0)
            {
               fprintf(textfile,"   Val *= %.15g;\n",ExpvMult);
            }
            if (ExpvMult != 0.0)
            {
               fprintf(textfile,"   Val += %.15g;\n",ExpvAdd);
            }
            fprintf(textfile,"   %s = Val;\n",CvarName);
         }
         else if (cvar_vnormal)
         {
            dozignor();
            fprintf(textfile,"   double Val;\n");
            fprintf(textfile,"   char Work[40];\n");
            fprintf(textfile,"   Val = DGLSystem::zignor();\n");
            if (NorvMult != 1.0)
            {
               fprintf(textfile,"   Val *= %.15g;\n",NorvMult);
            }
            if (NorvMult != 0.0)
            {
               fprintf(textfile,"   Val += %.15g;\n",NorvAdd);
            }
            fprintf(textfile,"   %s = Val;\n",CvarName);
         }
         else if (cvar_random)
         {
            fprintf(textfile,"   %s = RANDI;\n",CvarName);
         }
         else if (cvar_drandom)
         {
            fprintf(textfile,"   %s = RANDD;\n",CvarName);
         }
         else if (cvar_urandom)
         {
            fprintf(textfile,"   %s = RANDU;\n",CvarName);
         }
         else if (cvar_srandom)
         {
            fprintf(textfile,"   %s = RANDSI;\n",CvarName);
         }
