//---------------------------------------------------------------------------
        private static int CalculateBeginGrowingSeason(IClimateRecord[] annualClimate)
        //Calculate Begin Growing Degree Day (Last Frost; Minimum = 0 degrees C):
        {
            NormalRandomVar randVar            = new NormalRandomVar(0, 1);
            double          lastMonthMinTemp   = annualClimate[0].AvgMinTemp;
            int             dayCnt             = 15; //the middle of February
            int             beginGrowingSeason = -1;

            for (int i = 1; i < 7; i++)  //Begin looking in February (1).  Should be safe for at least 100 years.
            {
                int    totalDays      = (DaysInMonth(i, 3) + DaysInMonth(i - 1, 3)) / 2;
                double MonthlyMinTemp = annualClimate[i].AvgMinTemp;// + (monthlyTempSD[i] * randVar.GenerateNumber());

                //Now interpolate between days:
                double degreeIncrement = System.Math.Abs(MonthlyMinTemp - lastMonthMinTemp) / (double)totalDays;
                double Tnight          = MonthlyMinTemp; //start from warmer month
                double TnightRandom    = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));

                for (int day = 1; day <= totalDays; day++)
                {
                    if (TnightRandom <= 0)
                    {
                        beginGrowingSeason = (dayCnt + day);
                    }
                    Tnight      += degreeIncrement; //work backwards to find last frost day.
                    TnightRandom = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));
                }

                lastMonthMinTemp = MonthlyMinTemp;
                dayCnt          += totalDays; //new monthly mid-point
            }
            return(beginGrowingSeason);
        }
        //---------------------------------------------------------------------------
        private static int CalculateEndGrowingSeason(IClimateRecord[] annualClimate)//, Random autoRand)
        //Calculate End Growing Degree Day (First frost; Minimum = 0 degrees C):
        {
            NormalRandomVar randVar = new NormalRandomVar(0, 1);

            //Defaults for the middle of July:
            double lastMonthTemp = annualClimate[6].AvgMinTemp;
            int    dayCnt        = 198;

            //int endGrowingSeason = 198;

            for (int i = 7; i < 12; i++)  //Begin looking in August.  Should be safe for at least 100 years.
            {
                int    totalDays      = (DaysInMonth(i, 3) + DaysInMonth(i - 1, 3)) / 2;
                double MonthlyMinTemp = annualClimate[i].AvgMinTemp;

                //Now interpolate between days:
                double degreeIncrement = System.Math.Abs(lastMonthTemp - MonthlyMinTemp) / (double)totalDays;
                double Tnight          = lastMonthTemp; //start from warmer month

                //double randomT = (2 * annualClimate[i].StdDevTemp * randVar.GenerateNumber(autoRand));
                //Console.WriteLine("Night Temp random offset = {0}.", randomT);
                double TnightRandom = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));

                for (int day = 1; day <= totalDays; day++)
                {
                    if (TnightRandom <= 0)
                    {
                        return(dayCnt + day);
                    }
                    Tnight      -= degreeIncrement; //work forwards to find first frost day.
                    TnightRandom = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));
                    //Console.WriteLine("Tnight = {0}.", TnightRandom);
                }

                lastMonthTemp = MonthlyMinTemp;
                dayCnt       += totalDays; //new monthly mid-point
            }
            return(365);
        }
        //---------------------------------------------------------------------------
        private static int CalculateEndGrowingSeason(IClimateRecord[] annualClimate)//, Random autoRand)
        //Calculate End Growing Degree Day (First frost; Minimum = 0 degrees C):
        {
            NormalRandomVar randVar = new NormalRandomVar(0, 1);

            //Defaults for the middle of July:
            double lastMonthTemp = annualClimate[6].AvgMinTemp;
            int dayCnt = 198;
            //int endGrowingSeason = 198;

            for (int i = 7; i < 12; i++)  //Begin looking in August.  Should be safe for at least 100 years.
            {
                int totalDays = (DaysInMonth(i, 3) + DaysInMonth(i-1, 3)) / 2;
                double MonthlyMinTemp = annualClimate[i].AvgMinTemp;

                //Now interpolate between days:
                double degreeIncrement = System.Math.Abs(lastMonthTemp - MonthlyMinTemp) / (double) totalDays;
                double Tnight = lastMonthTemp;  //start from warmer month

                    //double randomT = (2 * annualClimate[i].StdDevTemp * randVar.GenerateNumber(autoRand));
                    //Console.WriteLine("Night Temp random offset = {0}.", randomT);
                double TnightRandom = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));

                for(int day = 1; day <= totalDays; day++)
                {
                    if(TnightRandom <= 0)
                        return (dayCnt + day);
                    Tnight -= degreeIncrement;  //work forwards to find first frost day.
                    TnightRandom = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));
                    //Console.WriteLine("Tnight = {0}.", TnightRandom);
                }

                lastMonthTemp = MonthlyMinTemp;
                dayCnt += totalDays;  //new monthly mid-point
            }
            return 365;
        }
        //---------------------------------------------------------------------------
        private static int CalculateBeginGrowingSeason(IClimateRecord[] annualClimate)
        //Calculate Begin Growing Degree Day (Last Frost; Minimum = 0 degrees C):
        {
            NormalRandomVar randVar = new NormalRandomVar(0, 1);
            double lastMonthMinTemp = annualClimate[0].AvgMinTemp;
            int dayCnt = 15;  //the middle of February
            int beginGrowingSeason = -1;

            for (int i = 1; i < 7; i++)  //Begin looking in February (1).  Should be safe for at least 100 years.
            {

                int totalDays = (DaysInMonth(i, 3) + DaysInMonth(i-1, 3)) / 2;
                double MonthlyMinTemp = annualClimate[i].AvgMinTemp;// + (monthlyTempSD[i] * randVar.GenerateNumber());

                //Now interpolate between days:
                double degreeIncrement = System.Math.Abs(MonthlyMinTemp - lastMonthMinTemp) / (double) totalDays;
                double Tnight = MonthlyMinTemp;  //start from warmer month
                double TnightRandom = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));

                for(int day = 1; day <= totalDays; day++)
                {
                    if(TnightRandom <= 0)
                        beginGrowingSeason = (dayCnt + day);
                    Tnight += degreeIncrement;  //work backwards to find last frost day.
                    TnightRandom = Tnight + (annualClimate[i].StdDevTemp * (Landis.Util.Random.GenerateUniform() * 2 - 1));
                }

                lastMonthMinTemp = MonthlyMinTemp;
                dayCnt += totalDays;  //new monthly mid-point
            }
            return beginGrowingSeason;
        }