diff --git a/pyglance/glance/data.py b/pyglance/glance/data.py
index 233a55c43b6054710bb5402c2d809dcc7702d9c7..7e6bde1e5118ac2e4c64bfe647fd04ba21e99350 100644
--- a/pyglance/glance/data.py
+++ b/pyglance/glance/data.py
@@ -180,13 +180,12 @@ class DataObject (object) :
                 self.masks.ignore_mask = np.zeros(shape, dtype=np.bool)
             
             # find the non-finite values
-            #non_finite_mask = ~np.isfinite(self.data) & ~self.masks.ignore_mask
-            #non_finite_mask = ~ (np.isfinite(self.data) | self.masks.ignore_mask)
-            non_finite_mask = np.zeros(shape, dtype=np.bool)
-            np.isfinite(self.data, non_finite_mask)
-            np.logical_or(non_finite_mask, self.masks.ignore_mask, non_finite_mask)
-            np.logical_not(non_finite_mask, non_finite_mask)
-            
+            non_finite_mask = ~ (np.isfinite(self.data) | self.masks.ignore_mask)
+            #non_finite_mask = np.zeros(shape, dtype=np.bool)
+            #np.isfinite(self.data, non_finite_mask)
+            #np.logical_or(non_finite_mask, self.masks.ignore_mask, non_finite_mask)
+            #np.logical_not(non_finite_mask, non_finite_mask)
+
             # find and mark the missing values
             missing_mask = np.zeros(shape, dtype=np.bool)
             # if the data has a fill value, mark where the missing data is
@@ -204,7 +203,7 @@ class DataObject (object) :
                 np.logical_or(self.masks.ignore_mask, valid_mask, valid_mask)
                 np.logical_not(valid_mask, valid_mask)
             else :
-                np.array([ ], dtype=np.bool)
+                valid_mask = np.array([ ], dtype=np.bool)
             
             # set our masks
             self.masks = BasicMaskSetObject(self.masks.ignore_mask, valid_mask,
diff --git a/pyglance/glance/io.py b/pyglance/glance/io.py
index 40d7c139d616bc7ba3800bb2f5d2e001f22c623b..4ffc2816085ac342fa5336cb3ce4f4f497fb5cdd 100644
--- a/pyglance/glance/io.py
+++ b/pyglance/glance/io.py
@@ -476,7 +476,7 @@ class nc (object):
 
             if needed_dtype is not None :
                 # now figure out where all the corrupted values are, and shift them up to be positive
-                needs_fix_mask = (scaled_data_copy < 0.0) & (scaled_data_copy != missing_val)
+                needs_fix_mask = (scaled_data_copy < add_offset) & (scaled_data_copy != missing_val)
                 # we are adding the 2's complement, but first we're scaling it appropriately
                 scaled_data_copy[needs_fix_mask] += ((np.iinfo(np.uint16).max + 1.0) * scale_factor) + add_offset
 
diff --git a/pyglance/glance/stats.py b/pyglance/glance/stats.py
index d1b5a845e7db2235c7f1988f800495b57369b442..86efa7e25a458cdeef913ec19efc159141b9e2af 100644
--- a/pyglance/glance/stats.py
+++ b/pyglance/glance/stats.py
@@ -136,7 +136,7 @@ class MissingValueStatistics (StatisticalData) :
             self.is_one_data_set = True
             self.desc_text     = dataSetDescription
             noData = len(dataObject.data.shape) <= 0
-            
+
             # figure out some basic statistics
             self.missing_count    = np.sum(dataObject.masks.missing_mask)
             self.missing_fraction = float(self.missing_count) / float(dataObject.data.size) if not noData else np.nan
@@ -277,7 +277,7 @@ class FiniteDataStatistics (StatisticalData) :
         # if we have a comparison object analyze the data associated with that comparison
         elif diffInfoObject is not None :
 
-            no_data = len(diffInfoObject.a_data_object.data.shape) <= 0
+            noData = len(diffInfoObject.a_data_object.data.shape) <= 0
 
             # analyze each of the original data sets that are being compared
             self.a_finite_stats = FiniteDataStatistics(dataObject=diffInfoObject.a_data_object, dataSetDescription="a")
@@ -285,15 +285,15 @@ class FiniteDataStatistics (StatisticalData) :
             
             # calculate some common statistics
             self.common_finite_count = np.sum(diffInfoObject.a_data_object.masks.valid_mask & diffInfoObject.b_data_object.masks.valid_mask) \
-                                        if not no_data else 0
+                                        if not noData else 0
             # use an exclusive or to check which points are finite in only one of the two data sets
             self.finite_in_only_one_count = np.sum((diffInfoObject.a_data_object.masks.valid_mask ^ diffInfoObject.b_data_object.masks.valid_mask) \
                                                     & ~diffInfoObject.diff_data_object.masks.ignore_mask) \
-                                            if not no_data else 0
+                                            if not noData else 0
             self.common_finite_fraction      = float(self.common_finite_count)      / float(diffInfoObject.a_data_object.data.size) \
-                                                if not no_data else np.nan
+                                                if not noData else np.nan
             self.finite_in_only_one_fraction = float(self.finite_in_only_one_count) / float(diffInfoObject.a_data_object.data.size) \
-                                                if not no_data else np.nan
+                                                if not noData else np.nan
             
         else:
             raise ValueError ("No data set was given when requesting statistical analysis of finite values.")
@@ -406,7 +406,7 @@ class NotANumberStatistics (StatisticalData) :
             self.is_one_data_set = True
             self.desc_text       = dataSetDescription
             noData = len(dataObject.data.shape) <= 0
-            
+
             # get some basic statistics
             self.nan_count = np.sum(dataObject.masks.non_finite_mask)
             self.nan_fraction = float(self.nan_count) / float(dataObject.data.size) if not noData else np.nan
@@ -750,8 +750,8 @@ class NumericalComparisonStatistics (StatisticalData) :
         self.mismatch_points_count      = np.sum(diffInfoObject.diff_data_object.masks.mismatch_mask)
         
         # calculate some more complex statistics, be careful not to divide by zero
-        self.mismatch_points_fraction      = float(self.mismatch_points_count)      / float(aData.size)              if not noData                    else np.nan
-        self.diff_outside_epsilon_fraction = float(self.diff_outside_epsilon_count) / float(total_num_finite_values) if (total_num_finite_values > 0) else np.nan
+        self.mismatch_points_fraction      = float(self.mismatch_points_count)      / float(aData.size)              if not noData                    else 0.0
+        self.diff_outside_epsilon_fraction = float(self.diff_outside_epsilon_count) / float(total_num_finite_values) if (total_num_finite_values > 0) else 0.0
         self.perfect_match_fraction        = float(self.perfect_match_count)        / float(total_num_finite_values) if (total_num_finite_values > 0) else np.nan
         
         # if desired, do the basic analysis
@@ -799,7 +799,7 @@ class NumericalComparisonStatistics (StatisticalData) :
         
         # if everything's invalid, stop now
         noData = np.sum(valid_mask) <= 0
-        
+
         # calculate and return statistics
         root_mean_square_value = delta.calculate_root_mean_square(diffData, valid_mask) if not noData else np.nan
         tempDiffData           = diffData[valid_mask] if not noData else None
@@ -916,19 +916,19 @@ class StatisticalAnalysis (StatisticalData) :
         
         also returns information about the fractions of failure
         """
-        
+
         passValues = [ ]
         
         # test the epsilon value tolerance
         
         # get the tolerance for failures compared to epsilon
         epsilonTolerance = epsilon_failure_tolerance if epsilon_failure_tolerance is not np.nan else epsilon_failure_tolerance_default
-        
+
         # did we fail based on the epsilon?
         failed_fraction = self.comparison.diff_outside_epsilon_fraction
         passed_epsilon  = None if (epsilonTolerance is None) else (failed_fraction <= epsilonTolerance)
         passValues.append(passed_epsilon)
-        
+
         # test the nonfinite tolerance
         
         # get the tolerance for failures in amount of nonfinite data (in spatially valid areas)
@@ -938,7 +938,7 @@ class StatisticalAnalysis (StatisticalData) :
         non_finite_diff_fraction = self.finiteData.finite_in_only_one_fraction
         passed_nonfinite         = None if (nonfiniteTolerance is None) else (non_finite_diff_fraction <= nonfiniteTolerance)
         passValues.append(passed_nonfinite)
-        
+
         # test if the total failed percentage is acceptable
         
         # get the total percentage of failed data that is acceptable
@@ -947,17 +947,17 @@ class StatisticalAnalysis (StatisticalData) :
         # did we fail based on all data failures?
         passed_all_percentage = None if (totalFailTolerance is None) else ((non_finite_diff_fraction + failed_fraction) <= totalFailTolerance)
         passValues.append(passed_all_percentage)
-        
+
         # test the r-squared correlation coefficent
         
         # get the minimum acceptable r-squared correlation coefficient
         min_r_squared = min_acceptable_r_squared if (min_acceptable_r_squared is not np.nan) else min_acceptable_r_squared_default
-        
+
         # did we fail based on the r-squared correlation coefficient?
         r_squared_value  = None if (min_r_squared is None) else self.comparison.r_squared_correlation
         passed_r_squared = None if (min_r_squared is None) else (r_squared_value >= min_r_squared)
         passValues.append(passed_r_squared)
-        
+
         # figure out the overall pass/fail result
         didPass = None
         for passValue in passValues :