public void AingangZuZaitRotatioonMili(
            Int64 Zait,
            int RotatioonMili)
        {
            if (EndeZait.HasValue)
            {
                return;
            }

            if (0 < ListeZuZaitRotatioonMili.Count)
            {
                if (Zait <= ListeZuZaitRotatioonMili.LastOrDefault().Zait)
                {
                    return;
                }
            }

            ListeZuZaitRotatioonMili.Enqueue(new SictWertMitZait <int>(Zait, RotatioonMili));

            var ListeZuZaitRotatioonMiliBerüksictigt = ListeZuZaitRotatioonMili.Skip(ListeZuZaitRotatioonMili.Count - 9).ToArray();

            if (6 < ListeZuZaitRotatioonMiliBerüksictigt.Length)
            {
                var RampAgregatioon = new ModuleRampAgregatioon(ListeZuZaitRotatioonMiliBerüksictigt, 200);

                RampAgregatioon.Berecne(ListeRampAgregatioon.ToArrayNullable());

                ScritLezteRampAgregatioon = RampAgregatioon;
                ListeRampAgregatioon.Enqueue(RampAgregatioon);
                ListeRampAgregatioon.ListeKürzeBegin(8);

                var NuldurcgangZaitMili = RampAgregatioon.NuldurcgangZaitMili;
                var GescwindigkaitMikro = RampAgregatioon.GescwindigkaitMikro;

                if (NuldurcgangZaitMili.HasValue && GescwindigkaitMikro.HasValue)
                {
                    var ZyyklusDauerMili = (Int64)(1e+9) / GescwindigkaitMikro.Value;

                    var NuldurcgangNääxteZait = NuldurcgangZaitMili.Value;

                    var NuldurcgangNääxteZaitDistanz = NuldurcgangNääxteZait - Zait;

                    RotatioonProjektioonNuldurcgangNääxte =
                        NuldurcgangNääxteZait.SictUmgebrocen(Zait, Zait + ZyyklusDauerMili);

                    /*
                     * 2014.09.27
                     *
                     * if (Math.Abs(NuldurcgangNääxteZaitDistanz) < 4444)
                     * */
                    if (NuldurcgangNääxteZaitDistanz <= 0 && Math.Abs(NuldurcgangNääxteZaitDistanz) < 8888)
                    {
                        var NuldurcgangVerdrängtDurcVorherige = false;

                        var RotatioonNuldurcgangLezteZait = this.RotatioonNuldurcgangLezteZait ?? this.BeginZait;

                        if (RotatioonNuldurcgangLezteZait.HasValue)
                        {
                            var RotatioonNuldurcgangLezteZaitDistanz = RotatioonNuldurcgangLezteZait.Value - NuldurcgangNääxteZait;

                            if (Math.Abs(RotatioonNuldurcgangLezteZaitDistanz) < Math.Abs(ZyyklusDauerMili) / 2)
                            {
                                NuldurcgangVerdrängtDurcVorherige = true;
                            }
                        }

                        if (!NuldurcgangVerdrängtDurcVorherige)
                        {
                            InternRotatioonListeNuldurcgangZait.Enqueue(NuldurcgangNääxteZait);

                            InternRotatioonListeNuldurcgangZait.ListeKürzeBegin(8);
                            InternRotatioonListeNuldurcgangZait.ListeKürzeBegin((Element) => 1000 * 60 * 15 < Zait - Element);
                        }
                    }
                }
            }

            ListeZuZaitRotatioonMili.ListeKürzeBegin(10);
        }
        public void Berecne(
            ModuleRampAgregatioon[] MengeVorherigeZuBerüksictige)
        {
            Int64[] ListeGescwindigkaitMikro = null;
            Int64?  GescwindigkaitMikro      = null;
            Int64?  NuldurcgangZaitMili      = null;

            SictWertMitZait <int>[] AingangListeZuZaitRampRotatioonMiliFiltertNaacVorherige        = null;
            SictWertMitZait <int>[] FürGescwindigkaitMengeZuScnapscusZaitpunktMengeAuslasungAnzaal = null;
            SictWertMitZait <int>[] ZuZaitpunktMengeAuslasungAnzaalOrdnet = null;

            try
            {
                var AingangListeZuZaitMiliRampRotatioonMili = this.AingangListeZuZaitMiliRampRotatioonMili;
                var GescwindigkaitScrankeMili = this.GescwindigkaitScrankeMili;

                if (null == AingangListeZuZaitMiliRampRotatioonMili)
                {
                    return;
                }

                if (GescwindigkaitScrankeMili < 1)
                {
                    return;
                }

                var AingangListeScnapscusZait =
                    AingangListeZuZaitMiliRampRotatioonMili
                    .Select((ZuZaitMiliRampRotatioonMili) => ZuZaitMiliRampRotatioonMili.Zait)
                    .ToArrayNullable();

                AingangListeZuZaitRampRotatioonMiliFiltertNaacVorherige =
                    FilterMitBerüksictigungVorherige(
                        AingangListeZuZaitMiliRampRotatioonMili,
                        MengeVorherigeZuBerüksictige,
                        5,
                        7,
                        out ZuZaitpunktMengeAuslasungAnzaalOrdnet);

                var ListeDiferenzZwisceScnapscusVorFilter =
                    ModuleRampAgregatioon.ListeDiferenzZwisceScnapscusBerecne(AingangListeZuZaitRampRotatioonMiliFiltertNaacVorherige, 1)
                    .Concat(ModuleRampAgregatioon.ListeDiferenzZwisceScnapscusBerecne(AingangListeZuZaitRampRotatioonMiliFiltertNaacVorherige, 2))
                    //.Concat(ModuleRampAgregatioon.ListeGescwindigkaitMikroBerecne(AingangListeZuZaitRampRotatioonMili, 3))
                    .ToArray();

                var ListeDiferenzZwisceScnapscus =
                    ListeDiferenzZwisceScnapscusVorFilter
                    .Where((Diferenz) => - GescwindigkaitScrankeMili * 1000 <= Diferenz.GescwindigkaitMikro && Diferenz.GescwindigkaitMikro <= GescwindigkaitScrankeMili * 1000)
                    .ToArray();

                var VorAuslasungMengeZuScnapscusZaitMengeVerwendungAnzaal =
                    MengeZuScnapscusZaitVerwendungAnzaal(AingangListeScnapscusZait, ListeDiferenzZwisceScnapscus);

                ListeGescwindigkaitMikro =
                    ListeDiferenzZwisceScnapscus
                    .Select((Diferenz) => Diferenz.GescwindigkaitMikro)
                    .ToArrayNullable();

                if (!(0 < ListeGescwindigkaitMikro.CountNullable()))
                {
                    return;
                }

                var MengeKombiListeGescwindigkaitMikro =
                    Bib3.Kombinatoorik.MengeKombinatioonTailmengeOoneOrdnung(
                        ListeDiferenzZwisceScnapscus,
                        Math.Max(5, Math.Max(ListeGescwindigkaitMikro.Length - 2, (ListeGescwindigkaitMikro.Length * 2) / 3 + 1)));

                if (!(1 < MengeKombiListeGescwindigkaitMikro.CountNullable()))
                {
                    return;
                }

                var MengeKombiErgeebnisGescwindigkaitUndDistanzAgr =
                    MengeKombiListeGescwindigkaitMikro
                    .Select((Kombi, KombiIndex) =>
                {
                    Int64 DistanzAgregatioon;

                    var Gescwindigkait = Fiting.Fit1DMitKomponenteExponent(
                        Kombi.Select((KombiElement) => KombiElement.GescwindigkaitMikro).ToArrayNullable(), 100, out DistanzAgregatioon);

                    if (!Gescwindigkait.HasValue)
                    {
                        DistanzAgregatioon = Int64.MaxValue;
                    }

                    return(new      KeyValuePair <DiferenzZwisceScnapscus[], KeyValuePair <Int64, Int64> >(
                               Kombi,
                               new     KeyValuePair <Int64, Int64>(Gescwindigkait ?? Int64.MinValue, DistanzAgregatioon)));
                })
                    .ToArray();

                var MengeKombiErgeebnisGescwindigkaitUndDistanzAgrBeste =
                    MengeKombiErgeebnisGescwindigkaitUndDistanzAgr
                    .OrderBy((Kandidaat) => Kandidaat.Value.Value)
                    .FirstOrDefault();

                /*
                 * 2014.09.25
                 *
                 * var NaacAuslasungMengeZuScnapscusZaitMengeVerwendungAnzaal =
                 *      MengeZuScnapscusZaitVerwendungAnzaal(AingangListeScnapscusZait, MengeKombiErgeebnisGescwindigkaitUndDistanzAgrBeste.Key);
                 *
                 * FürGescwindigkaitMengeZuScnapscusZaitpunktMengeAuslasungAnzaal =
                 *      AingangListeScnapscusZait
                 *      .Select((KandidaatScnapscusZait) =>
                 *              new	SictWertMitZait<int>(
                 *                      KandidaatScnapscusZait,
                 *                      VorAuslasungMengeZuScnapscusZaitMengeVerwendungAnzaal.FirstOrDefault((t) => t.Zait	== KandidaatScnapscusZait).Wert	-
                 *                      NaacAuslasungMengeZuScnapscusZaitMengeVerwendungAnzaal.FirstOrDefault((t) => t.Zait	== KandidaatScnapscusZait).Wert))
                 *      .Where((Kandidaat) => 0 < Kandidaat.Wert)
                 *      .ToArray();
                 * */

                GescwindigkaitMikro =
                    MengeKombiErgeebnisGescwindigkaitUndDistanzAgrBeste.Value.Key;

                if (!GescwindigkaitMikro.HasValue)
                {
                    return;
                }

                /*
                 * 2014.09.27
                 *
                 * var	FilterGescwindigkaitMikroScrankeMin	= (GescwindigkaitMikro * 7) / 10;
                 * var	FilterGescwindigkaitMikroScrankeMax	= (GescwindigkaitMikro * 13) / 10;
                 * */
                var FilterGescwindigkaitMikroScrankeMin = GescwindigkaitMikro / 2;
                var FilterGescwindigkaitMikroScrankeMax = GescwindigkaitMikro * 2;

                var ListeDiferenzZwisceScnapscusFilterNaacGescwindigkaitErgeebnis =
                    ListeDiferenzZwisceScnapscus
                    .Where((Kandidaat) =>
                           FilterGescwindigkaitMikroScrankeMin <= Kandidaat.GescwindigkaitMikro &&
                           Kandidaat.GescwindigkaitMikro <= FilterGescwindigkaitMikroScrankeMax)
                    .ToArray();

                var NaacAuslasungMengeZuScnapscusZaitMengeVerwendungAnzaal =
                    MengeZuScnapscusZaitVerwendungAnzaal(AingangListeScnapscusZait, ListeDiferenzZwisceScnapscusFilterNaacGescwindigkaitErgeebnis);

                FürGescwindigkaitMengeZuScnapscusZaitpunktMengeAuslasungAnzaal =
                    AingangListeScnapscusZait
                    .Select((KandidaatScnapscusZait) =>
                            new SictWertMitZait <int>(
                                KandidaatScnapscusZait,
                                VorAuslasungMengeZuScnapscusZaitMengeVerwendungAnzaal.FirstOrDefault((t) => t.Zait == KandidaatScnapscusZait).Wert -
                                NaacAuslasungMengeZuScnapscusZaitMengeVerwendungAnzaal.FirstOrDefault((t) => t.Zait == KandidaatScnapscusZait).Wert))
                    .Where((Kandidaat) => 0 < Kandidaat.Wert)
                    .ToArray();

                if (0 == GescwindigkaitMikro)
                {
                    return;
                }

                {
                    var ZyyklusDauerMili = (Int64)(1e+9) / GescwindigkaitMikro.Value;

                    var UmbrucRegioonBegin = (AingangListeZuZaitMiliRampRotatioonMili.Last().Zait - ZyyklusDauerMili / 2);
                    var UmbrucRegioonEnde  = UmbrucRegioonBegin + ZyyklusDauerMili;

                    var MengeKandidaatNuldurcgangZaitMili =
                        AingangListeZuZaitMiliRampRotatioonMili
                        .Select((ZuZaitMiliRampRotatioonMili) =>
                                ((ZuZaitMiliRampRotatioonMili.Zait - (ZuZaitMiliRampRotatioonMili.Wert * 1000000 / GescwindigkaitMikro.Value))
                                 .SictUmgebrocen(UmbrucRegioonBegin, UmbrucRegioonEnde)))
                        .ToArray();

                    NuldurcgangZaitMili = Fiting.Fit1DMitKomponenteExponent(MengeKandidaatNuldurcgangZaitMili, 100);
                }
            }
            finally
            {
                this.ListeGescwindigkaitMikro = ListeGescwindigkaitMikro;
                this.ZuZaitpunktMengeAuslasungAnzaalOrdnet = ZuZaitpunktMengeAuslasungAnzaalOrdnet;
                this.AingangListeZuZaitRampRotatioonMiliFiltertNaacVorherige = AingangListeZuZaitRampRotatioonMiliFiltertNaacVorherige;
                this.GescwindigkaitMikro = GescwindigkaitMikro;
                this.NuldurcgangZaitMili = NuldurcgangZaitMili;
                this.FürGescwindigkaitMengeZuScnapscusZaitpunktMengeAuslasungAnzaal = FürGescwindigkaitMengeZuScnapscusZaitpunktMengeAuslasungAnzaal;
            }
        }