diff --git a/nodes.py b/nodes.py
index 53e9cd50975e3d705c9fe26e0666f8e90c8fc187_bm9kZXMucHk=..34c8e9feb357f80774590665e5059cc5f411d2e8_bm9kZXMucHk= 100644
--- a/nodes.py
+++ b/nodes.py
@@ -215,8 +215,8 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return self.parent.ored(traverse_scope, _fromnode or self)
     
-    def neged(self, _fromnode=None):
-        return self.parent.neged(_fromnode or self)
+    def neged(self, traverse_scope=False, _fromnode=None):
+        return self.parent.neged(traverse_scope, _fromnode or self)
 
     
 class Or(BinaryNode):
@@ -233,8 +233,8 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return self
     
-    def neged(self, _fromnode=None):
-        return self.parent.neged(_fromnode or self)
+    def neged(self, traverse_scope=False, _fromnode=None):
+        return self.parent.neged(traverse_scope, _fromnode or self)
 
 
 class Not(Node):
@@ -257,7 +257,7 @@
         # XXX consider traverse_scope ?
         return self.parent.ored(traverse_scope, _fromnode or self)
     
-    def neged(self, _fromnode=None, strict=False):
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
         return self
 
 def parent_scope_property(attr):
@@ -320,8 +320,10 @@
             return self.parent.ored(traverse_scope, self)
         return self.parent.ored(traverse_scope, _fromnode)
     
-    def neged(self, _fromnode=None, strict=False):
-        if _fromnode is not None: # stop here
-            return False
-        if strict:
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
+        if not traverse_scope:
+            if _fromnode is not None: # stop here
+                return False
+            return self.parent.neged(self)
+        elif strict:
             return isinstance(self.parent, Not)
@@ -327,5 +329,5 @@
             return isinstance(self.parent, Not)
-        return self.parent.neged(self)
+        return self.parent.neged(traverse_scope, _fromnode)
 
     
 class Relation(Node):
@@ -389,6 +391,6 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return self.parent.ored(traverse_scope, _fromnode or self)
     
-    def neged(self, _fromnode=None, strict=False):
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
         if strict:
             return isinstance(self.parent, Not)
@@ -393,6 +395,6 @@
         if strict:
             return isinstance(self.parent, Not)
-        return self.parent.neged(_fromnode or self)
+        return self.parent.neged(traverse_scope, _fromnode or self)
 
     def is_types_restriction(self):
         if self.r_type not in ('is', 'is_instance_of'):
diff --git a/stmts.py b/stmts.py
index 53e9cd50975e3d705c9fe26e0666f8e90c8fc187_c3RtdHMucHk=..34c8e9feb357f80774590665e5059cc5f411d2e8_c3RtdHMucHk= 100644
--- a/stmts.py
+++ b/stmts.py
@@ -163,7 +163,7 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return None
     
-    def neged(self, _fromnode=None, strict=False):
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
         return None