diff --git a/fsl/data/atlases.py b/fsl/data/atlases.py
index 51d2f507ef8898b279c14c3b790187b9eabbe1e9..7920c962783bfbc01a14e4bc1aa0cdfc9aabff43 100644
--- a/fsl/data/atlases.py
+++ b/fsl/data/atlases.py
@@ -565,6 +565,9 @@ class AtlasDescription(object):
         for i, label in enumerate(self.labels):
             label.x, label.y, label.z = coords[i]
 
+        # Make sure the labels are sorted by index
+        self.labels = list(sorted(self.labels))
+
 
     def find(self, index=None, value=None):
         """Find an :class:`.AtlasLabel` either by ``index``, or by ``value``.
@@ -579,7 +582,7 @@ class AtlasDescription(object):
             raise ValueError('Only one of index or value may be specified')
 
         if index is not None: return self.labels[         index]
-        else:                 return self.__labelsByValue[value]
+        else:                 return self.__labelsByValue[int(value)]
 
 
     def __eq__(self, other):
@@ -881,7 +884,6 @@ class ProbabilisticAtlas(Atlas):
            loc[2] >= self.shape[2]:
             return []
 
-
         props = self[loc[0], loc[1], loc[2], :]
 
         # We only return labels for this atlas -
@@ -917,6 +919,9 @@ class ProbabilisticAtlas(Atlas):
         weights   = mask[boolmask]
         weightsum = weights.sum()
 
+        if weightsum == 0:
+            return [0.0] * len(self.desc.labels)
+
         for label in self.desc.labels:
 
             vals  = self[..., label.index]