Index: /inundation/ga/storm_surge/pyvolution/least_squares.py
===================================================================
--- /inundation/ga/storm_surge/pyvolution/least_squares.py	(revision 610)
+++ /inundation/ga/storm_surge/pyvolution/least_squares.py	(revision 611)
@@ -185,5 +185,9 @@
         self.build_coefficient_matrix_B(point_coordinates)    
 
-
+    def set_point_coordinates(self, point_coordinates):
+        """
+        A public interface to setting the point co-ordinates.
+        """
+        self.build_coefficient_matrix_B(point_coordinates)
         
     def build_coefficient_matrix_B(self, point_coordinates=None):
@@ -239,9 +243,14 @@
             #Find vertices near x
             candidate_vertices = root.search(x[0], x[1])
-                
-	    element_found, sigma0, sigma1, sigma2, k = \
-                self.search_triangles_of_vertices(candidate_vertices, x)
 
             is_more_elements = True
+            if candidate_vertices == []:
+                # The point isn't even within the root cell!
+                is_more_elements = False
+                element_found = False
+            else:
+                element_found, sigma0, sigma1, sigma2, k = \
+                    self.search_triangles_of_vertices(candidate_vertices, x)
+
             while not element_found and is_more_elements: 
                 candidate_vertices = root.expand_search()
Index: /inundation/ga/storm_surge/pyvolution/quad.py
===================================================================
--- /inundation/ga/storm_surge/pyvolution/quad.py	(revision 610)
+++ /inundation/ga/storm_surge/pyvolution/quad.py	(revision 611)
@@ -81,5 +81,7 @@
             for child in self:
                 if child.contains(x,y):
-                    branch.append(self)
+                    brothers = list(self.children)
+                    brothers.remove(child)
+                    branch.append(brothers)
                     points, branch = child.search_branch(x,y, branch)
         else:
@@ -98,5 +100,7 @@
             for child in self:
                 if child.contains(x,y):
-                    branch.append(self)
+                    brothers = list(self.children)
+                    brothers.remove(child)
+                    branch.append(brothers)
                     points, branch = child.search_branch(x,y, branch)
                     
@@ -114,10 +118,8 @@
             points = []
         else:
-            larger_cell = self.branch.pop()
-            #print "larger_cell ", larger_cell.show() # Get_tree()
-            for child in larger_cell:
-                #This means it will also go down the branch known to be bad.
-                #So, if things are too slow, this could be speed up
-                points += child.retrieve()
+            three_cells = self.branch.pop()
+            for cell in three_cells:
+                #print "cell ", cell.show() 
+                points += cell.retrieve()
         return points
 
Index: /inundation/ga/storm_surge/pyvolution/test_least_squares.py
===================================================================
--- /inundation/ga/storm_surge/pyvolution/test_least_squares.py	(revision 610)
+++ /inundation/ga/storm_surge/pyvolution/test_least_squares.py	(revision 611)
@@ -69,5 +69,18 @@
         answer =  [ [ 0.06666667,  0.46666667,  0.46666667,  0.,
                       0., 0. , 0., 0., 0., 0.]]
-        assert allclose(interp.get_A(), answer) 
+        assert allclose(interp.get_A(), answer)
+        interp.set_point_coordinates([[-30, -30]]) #point outside of mesh
+        #print "PDSG - interp.get_A()", interp.get_A()
+        answer =  [ [ 0.0,  0.0,  0.0,  0.,
+                      0., 0. , 0., 0., 0., 0.]]
+        assert allclose(interp.get_A(), answer)
+
+        
+        #point outside of quad tree root cell
+        interp.set_point_coordinates([[-70, -70]])
+        #print "PDSG - interp.get_A()", interp.get_A()
+        answer =  [ [ 0.0,  0.0,  0.0,  0.,
+                      0., 0. , 0., 0., 0., 0.]]
+        assert allclose(interp.get_A(), answer)
         
 
