diff --git a/R/aktualisiere_karten.R b/R/aktualisiere_karten.R
index 28626b76e347cde275a6d73884451345badcdb84..413cc07b78337423c7f99619985951e869e0b75b 100644
--- a/R/aktualisiere_karten.R
+++ b/R/aktualisiere_karten.R
@@ -1,10 +1,23 @@
 #' aktualisiere_karten.R
 
 
+# Diese Funktion schaltet zwischen den beiden Aggregier-Funktionen um:
+# der mit Briefwahl und der ohne Briefwahl. 
+# Wenn alle Stimmbezirke ausgezählt sind, wird die Briefwähler-Stimmenzahl
+# dazu gerechnet. 
+switcher_aggregiere <- function(stimmbezirke_df) {
+  if (sum(stimmbezirke_df$meldungen_anz) == sum(stimmbezirke_df$meldungen_max)) {
+    aggregiere_stadtteile_mit_briefwahl(stimmbezirke_df)
+  } else {
+    aggregiere_stadtteile(stimmbezirke_df)
+  }
+}
+
 aktualisiere_karten <- function(wl_url = stimmbezirke_url) {
   # Lies Ortsteil-Daten ein und vergleiche
   neue_orts_df <- lies_gebiet(wl_url) %>% 
-    aggregiere_stadtteile() %>% 
+    # aggregiere_stadtteile() %>% 
+    switcher_aggregiere() %>% 
     mutate(quorum = ifelse(wahlberechtigt == 0,
                            0,
                            ja / wahlberechtigt * 100)) %>% 
@@ -18,11 +31,11 @@ aktualisiere_karten <- function(wl_url = stimmbezirke_url) {
                                                  "JA",
                                                  "JA QUORUM")))
     ))
-  alte_orts_df <- hole_letztes_df("daten/ortsteile")
-  # Datenstand identisch? Dann brich ab. 
-  if(vergleiche_stand(alte_orts_df,neue_orts_df)) {
-    return(FALSE) 
-  } else {
+  # alte_orts_df <- hole_letztes_df("daten/ortsteile")
+  # # Datenstand identisch? Dann brich ab. 
+  # if(vergleiche_stand(alte_orts_df,neue_orts_df)) {
+  #   return(FALSE) 
+  # } else {
     # Zeitstempel holen
     archiviere(neue_orts_df,"daten/ortsteile")
     ts <- neue_orts_df %>% pull(zeitstempel) %>% last()
@@ -45,5 +58,6 @@ aktualisiere_karten <- function(wl_url = stimmbezirke_url) {
     dw_publish_chart(choropleth_id)
     dw_publish_chart(tabelle_id)
     return(TRUE)
-  }
-}
\ No newline at end of file
+  #}
+}
+
diff --git a/R/daten_vorbereiten.R b/R/daten_vorbereiten.R
index 7dcd2459e760bc90b6e99592abb08ff067b07727..8c32bd68f25bfe78f21235974e32c99b0d0420a9 100644
--- a/R/daten_vorbereiten.R
+++ b/R/daten_vorbereiten.R
@@ -66,3 +66,24 @@ opendata_wahllokale_df <- read_csv2("index/opendata-wahllokale.csv")
 
 save(stadtteile_df,zuordnung_stimmbezirke_df,opendata_wahllokale_df,file ="index/index.rda")
 
+#---- Leere Daten pushen - in alle Tabellen----
+leerdaten_stimmbezirk_df <- lies_gebiet("https://votemanager-ffm.ekom21cdn.de/2022-11-06/06412000/praesentation/Open-Data-06412000-Buergerentscheid-zur-Abwahl-des-Oberbuergermeisters-der-Stadt-Frankfurt-am-Main_-Herrn-Peter-Feldmann-Stimmbezirk.csv?ts=1667662273015")
+leerdaten_ort_df <- leerdaten_stimmbezirk_df %>% 
+  aggregiere_stadtteile() %>% 
+  mutate(quorum = ifelse(wahlberechtigt == 0,
+                         0,
+                         ja / wahlberechtigt * 100)) %>% 
+  mutate(status = ifelse(meldungen_anz == 0,
+                         "KEINE DATEN",
+                         paste0(ifelse(meldungen_anz < meldungen_max,
+                                       "TREND ",""),
+                                ifelse(ja < nein,
+                                       "NEIN",
+                                       ifelse(quorum < 30,
+                                              "JA",
+                                              "JA QUORUM")))
+  ))
+
+dw_data_to_chart(leerdaten_ort_df,choropleth_id)
+dw_data_to_chart(leerdaten_ort_df,symbol_id)
+dw_data_to_chart(leerdaten_ort_df,tabelle_id)
diff --git a/R/lies_aktuellen_stand.R b/R/lies_aktuellen_stand.R
index d95fa6089ec47454337c731b3eaa1df135ddd813..b342474e9685b45516b7ac52b469b74da013a1c7 100644
--- a/R/lies_aktuellen_stand.R
+++ b/R/lies_aktuellen_stand.R
@@ -135,6 +135,79 @@ aggregiere_stadtteile <- function(stimmbezirke_df) {
   return(ortsteile_df)
 }
 
+aggregiere_stadtteile_mit_briefwahl <- function(stimmbezirke_df) {
+  ortsteile_df <- stimmbezirke_df %>% 
+    left_join(zuordnung_stimmbezirke_df,by=c("nr","name")) %>%
+    left_join(opendata_wahllokale_df %>% 
+                select (nr = `Bezirk-Nr`,
+                        typ = `Bezirk-Art`), by="nr") %>% 
+    group_by(ortsteilnr) %>% 
+    summarize(zeitstempel = last(zeitstempel),
+              # Bool'sche Multiplikation: Wenn Stimmbezirk kein Briefwahlbezirk, 
+              # wird mit 0 multipliziert; nur die Briefwahl-Stimmbezirke zählen.
+              briefwahl = sum((typ == "B") * stimmen),
+              across(meldungen_anz:nein, ~ sum(.,na.rm = T))) %>%
+    rename(nr = ortsteilnr) %>% 
+    # Stadtteilnamen, 2018er Ergebnisse, Geokoordinaten dazuholen
+    left_join(stadtteile_df, by="nr") %>% 
+    # Nach Ortsteil sortieren
+    arrange(nr) %>% 
+    # Wichtige Daten für bessere Lesbarkeit nach vorn
+    relocate(zeitstempel,nr,name,lon,lat)
+  
+  # Sicherheitscheck: Warnen, wenn nicht alle Ortsteile zugeordnet
+  if (nrow(ortsteile_df) != nrow(stadtteile_df)) teams_warnung("Nicht alle Ortsteile zugeordnet")
+  if (nrow(zuordnung_stimmbezirke_df) != length(unique(stimmbezirke_df$nr))) teams_warnung("Nicht alle Stimmbezirke zugeordnet")
+  return(ortsteile_df)
+}
+
+
+# Aggregation auf Wahllokal-Ebene
+aggregiere_wahllokale <- function(stimmbezirke_df) {
+  wahllokale_df <- stimmbezirke_df %>% 
+    # Zuordnung der Stimmbezirke zu Ortsteilen
+    left_join(zuordnung_stimmbezirke_df,by=c("nr","name")) %>%
+    # Zuordnung der Stimmbezirke zu Wahllokalen über die Stimmbezirks-Nr
+    left_join(opendata_wahllokale_df %>% 
+                select (nr = `Bezirk-Nr`,
+                        typ = `Bezirk-Art`, # W = Wahllokal, B = Bezirk,
+                        wl_name = `Wahlraum-Bezeichnung`,
+                        adresse = `Wahlraum-Adresse`), 
+              by = "nr")  %>% 
+    # Stadtteilnamen, 2018er Ergebnisse dazuholen
+    left_join(stadtteile_df %>% 
+                select(ortsteilnr = nr,
+                       ortsteil = name, 
+                       wahlberechtigt_2018,
+                       waehler_2018,
+                       gueltig_2018,
+                       feldmann_2018), by="ortsteilnr") %>%
+    # Die Bezeichner-Felder nach vorn sortieren
+    relocate(zeitstempel, 
+             nr,
+             name,
+             wl_name,
+             typ,
+             adresse,
+             ortsteilnr,
+             ortsteil) %>% 
+    # Nach Wahllokal aggregieren  
+    group_by(wl_name, adresse) %>% 
+    summarize(zeitstempel = last(zeitstempel),
+              wl_name = last(wl_name),
+              typ = last(typ),
+              adresse = last(adresse),
+              ortsteil = last(ortsteil),
+              across(meldungen_anz:nein, ~ sum(.,na.rm = T))) %>%
+    # Nach Ortsteil sortieren
+    arrange(ortsteil) 
+  # Sicherheitscheck: Warnen, wenn nicht alle Wahllokale zugeordnet
+  if (nrow(wahllokale_df) != length(unique(opendata_wahllokale_df$`Wahlraum-Bezeichnung`))) teams_warnung("Nicht alle Stimmbezirke zugeordnet")
+  return(ortsteile_df)
+}
+
+
+
 lies_stadtteil_direkt <- function(stand_url = ortsteile_url) {
   neu_df <- lies_gebiet(stand_url)  %>%
     # nr bei Ortsteil-Daten leer/ignorieren
diff --git a/README.md b/README.md
index cfafd514ad8700c6cc07854cc36c0932dce0810f..5de0de346c22cba021993fdf49617583b7edb48a 100644
--- a/README.md
+++ b/README.md
@@ -72,7 +72,7 @@ Nutzt die Livedaten von https://wahlen.frankfurt.de - die aktuellen Daten nach O
  -  D1 : Ja-Stimmen
  -  D2 : Nein-Stimmen
  
-Es gibt 575 Stimmbezirke - also administrative Auszählungs-Einheiten. Fast 200 von diesen "Bezirken" sind die Briefwahl-Auszählungen - sie werden alle in der Messe ausgezählt. Insgesamt gibt es 2019 Wahllokale. (vgl. index/opendata-wahllokale.csv)
+Es gibt 575 Stimmbezirke - also administrative Auszählungs-Einheiten. Fast 200 von diesen "Bezirken" sind die Briefwahl-Auszählungen - sie werden alle in der Messe ausgezählt. Insgesamt gibt es 219 Wahllokale. (vgl. index/opendata-wahllokale.csv)
  
 ## Wann gibt es wo Daten?