diff --git a/Elecciones-Web/src/Elecciones.Worker/Worker.cs b/Elecciones-Web/src/Elecciones.Worker/Worker.cs
index 6a67e38..8157e76 100644
--- a/Elecciones-Web/src/Elecciones.Worker/Worker.cs
+++ b/Elecciones-Web/src/Elecciones.Worker/Worker.cs
@@ -432,6 +432,10 @@ public class Worker : BackgroundService
     /// 1. Consulta el reparto de bancas a nivel PROVINCIAL para cada categoría.
     /// 2. Consulta el reparto de bancas desglosado por SECCIÓN ELECTORAL para cada categoría.
     /// 
+    /// 
+    /// Sondea la proyección de bancas a nivel Provincial y por Sección Electoral.
+    /// Esta versión recolecta todos los datos disponibles y los guarda en una única transacción.
+    /// 
     private async Task SondearProyeccionBancasAsync(string authToken, CancellationToken stoppingToken)
     {
         try
@@ -461,23 +465,20 @@ public class Worker : BackgroundService
 
             _logger.LogInformation("Iniciando sondeo de Bancas a nivel Provincial y para {count} Secciones Electorales...", seccionesElectorales.Count);
 
-            bool hasReceivedAnyNewData = false;
+            // Creamos una lista para recolectar todas las proyecciones que encontremos.
             var nuevasProyecciones = new List();
 
-            // --- NUEVA LÓGICA: Bucle para el nivel Provincial ---
+            // 1. Bucle para el nivel Provincial
             foreach (var categoria in categoriasDeBancas)
             {
                 if (stoppingToken.IsCancellationRequested) break;
-
-                // Llamamos a la API sin 'seccionProvincialId' para obtener el total provincial.
                 var repartoBancas = await _apiService.GetBancasAsync(authToken, provincia.DistritoId!, null, categoria.Id);
 
-                if (repartoBancas?.RepartoBancas is { Count: > 0 })
+                // Si la lista de bancas no es nula (incluso si está vacía), la procesamos.
+                if (repartoBancas?.RepartoBancas != null)
                 {
-                    hasReceivedAnyNewData = true;
                     foreach (var banca in repartoBancas.RepartoBancas)
                     {
-                        // Guardamos la proyección asociándola al ID del ámbito de la provincia.
                         nuevasProyecciones.Add(new ProyeccionBanca
                         {
                             AmbitoGeograficoId = provincia.Id,
@@ -488,19 +489,17 @@ public class Worker : BackgroundService
                 }
             }
 
-            // --- LÓGICA EXISTENTE: Bucle para el nivel de Sección Electoral ---
+            // 2. Bucle para el nivel de Sección Electoral
             foreach (var seccion in seccionesElectorales)
             {
                 if (stoppingToken.IsCancellationRequested) break;
                 foreach (var categoria in categoriasDeBancas)
                 {
                     if (stoppingToken.IsCancellationRequested) break;
-
                     var repartoBancas = await _apiService.GetBancasAsync(authToken, seccion.DistritoId!, seccion.SeccionProvincialId!, categoria.Id);
 
-                    if (repartoBancas?.RepartoBancas is { Count: > 0 })
+                    if (repartoBancas?.RepartoBancas != null)
                     {
-                        hasReceivedAnyNewData = true;
                         foreach (var banca in repartoBancas.RepartoBancas)
                         {
                             nuevasProyecciones.Add(new ProyeccionBanca
@@ -514,12 +513,12 @@ public class Worker : BackgroundService
                 }
             }
 
-            // --- LÓGICA DE GUARDADO CENTRALIZADA ---
-            if (hasReceivedAnyNewData)
+            // 3. Guardado Final
+            // Ahora la condición es simple: si nuestra lista recolectora tiene CUALQUIER COSA, actualizamos la BD.
+            if (nuevasProyecciones.Any())
             {
-                _logger.LogInformation("Se recibieron {count} nuevos datos de bancas. Actualizando la tabla de proyecciones...", nuevasProyecciones.Count);
+                _logger.LogInformation("Se recibieron {count} registros de proyección de bancas. Actualizando la tabla...", nuevasProyecciones.Count);
 
-                // Usamos una transacción para asegurar la consistencia.
                 await using var transaction = await dbContext.Database.BeginTransactionAsync(stoppingToken);
 
                 await dbContext.Database.ExecuteSqlRawAsync("DELETE FROM ProyeccionesBancas", stoppingToken);
@@ -531,7 +530,8 @@ public class Worker : BackgroundService
             }
             else
             {
-                _logger.LogInformation("Sondeo de Bancas completado. No se encontraron datos nuevos de proyección, la tabla no fue modificada.");
+                // Si después de todas las llamadas, la lista sigue vacía, no hacemos nada.
+                _logger.LogInformation("Sondeo de Bancas completado. No se encontraron datos de proyección, la tabla no fue modificada.");
             }
         }
         catch (Exception ex)