diff --git a/edge-monitoring/VERSION b/edge-monitoring/VERSION
index 0d91a54..9e11b32 100644
--- a/edge-monitoring/VERSION
+++ b/edge-monitoring/VERSION
@@ -1 +1 @@
-0.3.0
+0.3.1
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index 29d66f5..8ac3ea5 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -62,6 +62,19 @@
             return True
     return False
 
+def is_naive_datetime(d):
+    return d.tzinfo is None or d.tzinfo.utcoffset(d) is None
+
+def process_all_day_events(es):
+    for event in es:
+        if event.all_day:
+            # All day events have naive datetimes, which breaks comparisons
+            pacific = pytz.timezone('US/Pacific')
+            if is_naive_datetime(event.start):
+                event.start = pacific.localize(event.start)
+            if is_naive_datetime(event.end):
+                event.end = pacific.localize(event.end)
+
 def in_maintenance_window(events, name, now):
     for event in events:
         if event.start < now and event.end > now:
@@ -76,6 +89,7 @@
         now = datetime.datetime.now(pytz.utc)
         try:
             es  = events(SECRET_ICAL_URL, start = now)
+            process_all_day_events(es)
         except Exception as e:
             print(e)
         else:
diff --git a/edge-monitoring/edge_monitoring_server_k8s.yaml b/edge-monitoring/edge_monitoring_server_k8s.yaml
deleted file mode 100644
index 1041cfe..0000000
--- a/edge-monitoring/edge_monitoring_server_k8s.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
-  name: edge-monitoring
-spec:
-  finalizers:
-  - kubernetes
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: edge-monitoring-server
-  labels:
-    app: edge-monitoring-server
-  namespace: edge-monitoring
-spec:
-  selector:
-    matchLabels:
-      app: edge-monitoring-server
-  replicas: 1
-  strategy:
-    type: RollingUpdate
-  template:
-    metadata:
-      labels:
-        app: edge-monitoring-server
-      annotations:
-        field.cattle.io/workloadMetrics: '[{"path":"/edges/metrics","port":80,"schema":"HTTP"}]'
-    spec:
-      containers:
-      - name: server
-        image: docker.io/omecproject/edge-monitoring-server:0.3.0
-        imagePullPolicy: Always
-        command: ["python", "edge_monitoring_server.py"]
-        env:
-          - name: SECRET_ICAL_URL
-            valueFrom:
-              secretKeyRef:
-                name: calendar-secret
-                key: iCalUrl
-        livenessProbe:
-          httpGet:
-            path: /edges/healthz
-            port: 80
-          initialDelaySeconds: 3
-          periodSeconds: 3
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: edge-monitoring-server
-  namespace: edge-monitoring
-spec:
-  selector:
-    app: edge-monitoring-server
-  ports:
-  - port: 80
-    targetPort: 80
-    protocol: TCP
-    name: server
----
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
-  name: edge-monitoring-server
-  namespace: edge-monitoring
-spec:
-  rules:
-  - host: aether.onlab.us
-    http:
-      paths:
-      - backend:
-          serviceName: edge-monitoring-server
-          servicePort: 80
-        path: /edges
diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring/test_edge_monitoring_server.py
index c6a6e03..cf26f88 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring/test_edge_monitoring_server.py
@@ -21,12 +21,13 @@
 
 
 class MyEvent:
-    def __init__ (self, location = "", description = "", summary = "", start = None, end = None):
+    def __init__ (self, location = "", description = "", summary = "", start = None, end = None, all_day = False):
         self.location = location
         self.description = description
         self.summary = summary
         self.start = start
         self.end = end
+        self.all_day = all_day
 
 class MyEventNoLoc:
     def __init__ (self, description = "", summary = ""):
@@ -81,6 +82,22 @@
         now = datetime.datetime.now(pytz.utc)
         self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
 
+    def test_all_day_events(self):
+        events = []
+        events.append(MyEvent(location = "production-edge-onf-menlo",
+            start = datetime.datetime(2020, 9, 2, 0, 0),
+            end = datetime.datetime(2020, 9, 3, 0, 0),
+            all_day = True))
+
+        ems.process_all_day_events(events)
+
+        now = datetime.datetime(2020, 9, 2, 12, 0, tzinfo=pytz.utc)
+        self.assertTrue(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+
+        now = datetime.datetime(2020, 9, 3, 12, 0, tzinfo=pytz.utc)
+        self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+
+
 
 if __name__ == '__main__':
     suite = unittest.TestLoader().loadTestsFromTestCase(TestEdgeMonitoringServer)
