diff --git a/lib/xmet/rawins.py b/lib/xmet/rawins.py
index a519af8..e049827 100644
--- a/lib/xmet/rawins.py
+++ b/lib/xmet/rawins.py
@@ -48,7 +48,10 @@ class RawinsObs():
     }
 
     def parse_timestamp(self, value: str):
-        day  = int(value[0:2]) - 50
+        if value[0:2] == '//':
+            return None
+
+        day  = int(value[0:2])
         hour = int(value[2:4])
 
         now = datetime.datetime.now(datetime.UTC)
@@ -57,7 +60,7 @@ class RawinsObs():
             'timestamp': datetime.datetime(
                 year  = now.year,
                 month = now.month,
-                day   = day
+                day   = day if day < 51 else day - 50
             )
         }
 
@@ -68,13 +71,26 @@ class RawinsObs():
             }
 
     def parse_temp_dewpoint(self, value: str):
-        tenths = int(value[2])
-        sign   = -1 if tenths % 1 == 0 else 1
+        if value[2] == '/':
+            return {
+                'temp':     None,
+                'dewpoint': None
+            }
 
-        temp     = sign * 0.1 * float(value[0:3])
-        dda      = int(value[3:5])
-        dd       = dda * 0.1 if dda <= 50 else dda - 50
-        dewpoint = temp - dd
+        if value[0:2] == '//':
+            temp = None
+        else:
+            tenths = int(value[2])
+            sign   = -1 if tenths % 1 == 0 else 1
+
+            temp = sign * 0.1 * float(value[0:3])
+
+        if value[3:5] == '//':
+            dewpoint = None
+        else:
+            dda      = int(value[3:5])
+            dd       = dda * 0.1 if dda <= 50 else dda - 50
+            dewpoint = temp - dd
 
         return {
             'temp':     temp,
@@ -85,6 +101,9 @@ class RawinsObs():
         base_speed = 0
         base_dir   = 0
 
+        if value == '=':
+            return
+
         if value[2] == '1':
             base_speed = 100
         elif value[2] == '5':
@@ -93,9 +112,25 @@ class RawinsObs():
             base_speed = 100
             base_dir   = 5
 
+        if value[0:3] == '///':
+            return {
+                'dir':   None,
+                'speed': None
+            }
+
+        if value[0:2] == '//':
+            wind_dir = None
+        else:
+            wind_dir = float(value[0:3]) + base_dir
+
+        if value[3:5] == '//':
+            wind_speed = None
+        else:
+            wind_speed = float(value[3:5]) + base_speed
+
         return {
-            'dir':   float(value[0:3]) + base_dir,
-            'speed': float(value[4:]) + base_speed
+            'dir':   wind_dir,
+            'speed': wind_speed
         }
 
     def parse_height_pressure(self, value: str):
@@ -123,7 +158,7 @@ class RawinsObs():
         samples = list()
 
         for i in range(2, len(self.values), 3):
-            if len(self.values) <= i+2:
+            if len(self.values) <= i+2 or self.values[i][-1] == '=':
                 break
 
             samples.append({
@@ -132,6 +167,9 @@ class RawinsObs():
                 'wind':      self.parse_wind(self.values[i+2])
             })
 
+        if self.values[1][0:3] == 'NIL':
+            return None
+
         return {
             'timestamp': self.parse_timestamp(self.values[0]),
             'station':   int(self.values[1]),