diff --git a/geomagio/imfv283/IMFV283Parser.py b/geomagio/imfv283/IMFV283Parser.py
index fa2603ca79feef9ef5e29c9e02224f7a769990b6..eb4aa65557087a688a16934faa50caff151db54c 100644
--- a/geomagio/imfv283/IMFV283Parser.py
+++ b/geomagio/imfv283/IMFV283Parser.py
@@ -56,11 +56,8 @@ class IMFV283Parser(object):
     We can change this to get smarter, but right now, there's no need to.
     """
 
-    def __init__(self, observatoryMetadata=None):
+    def __init__(self):
         """Create a new IMFV283 parser."""
-        # dictionary of data (channel : numpy.array<float64>)
-        self.observatoryMetadata = observatoryMetadata or ObservatoryMetadata()
-        # temporary storage for data being parsed
         self._parsedata = None
         self.stream = obspy.core.Stream()
 
@@ -124,18 +121,6 @@ class IMFV283Parser(object):
             d4 = 0x100 * data[bytecount + 6] + data[bytecount + 7]
             bytecount += 8
 
-            # take 2 byte int, scale and offset it then shift it to the
-            # correct value 10th nanotesla, and convert it to a nanotesla
-            # float.
-            if d1 == DEAD_VALUE:
-                d1 = numpy.nan
-            if d2 == DEAD_VALUE:
-                d2 = numpy.nan
-            if d3 == DEAD_VALUE:
-                d3 = numpy.nan
-            if d4 == DEAD_VALUE:
-                d4 = numpy.nan
-
             parse_data[channels[0]].append(d1)
             parse_data[channels[1]].append(d2)
             parse_data[channels[2]].append(d3)
@@ -297,15 +282,17 @@ class IMFV283Parser(object):
         orientation = goes_header['orient']
         for channel, loc in zip(CHANNELS[orientation], xrange(0, 4)):
             stats = obspy.core.Stats()
-            stats.sampling_rate = 0.0166666666667
             stats.channel = channel
+            stats.sampling_rate = 0.0166666666667
             stats.starttime = goes_time
             stats.npts = 12
             stats.station = msg_header['obs']
-            self.observatoryMetadata.set_metadata(stats, msg_header['obs'],
-                    channel, 'variation', 'minute')
+
             numpy_data = numpy.array(data[channel], dtype=numpy.float64)
             numpy_data[numpy_data == DEAD_VALUE] = numpy.nan
+            # Data values need to be scaled, offset and shifted into the
+            # correct 10th nanotesla value.
+            # For our convenience we convert to nanotesla values.
             numpy_data = numpy.multiply(numpy_data, scale[loc])
             numpy_data = numpy.add(numpy_data, offset[loc] * BIAS - SHIFT)
             numpy_data = numpy.divide(numpy_data, 10.0)
@@ -330,7 +317,10 @@ class IMFV283Parser(object):
         ness_byte = 0
         goes_byte = 0
 
-        offset = self._get_data_offset(data_len)
+        if data_len == MSG_SIZE_300B:
+            offset = HEADER_SIZE + 1
+        else:
+            offset = HEADER_SIZE
 
         for cnt in xrange(0, 63):
             # Convert 3 byte "pair" into ordinal values for manipulation.