diff --git a/src/svalue.c b/src/svalue.c
index 39b1a8cc8f15452e3bd2b95c2eff60af74ef9c79..08138506ab2a6b4cf44639966bba5c7aa4f2f019 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -525,11 +525,13 @@ int complex_svalue_is_true( const struct svalue *s )
 
       if(!(p = s->u.object->prog)) return 0;
 
-      if((fun = FIND_LFUN(p, LFUN_NOT)) == -1)
-          return 1;
-
-      if((fun = FIND_LFUN(p->inherits[SUBTYPEOF(*s)].prog, LFUN_NOT)) == -1)
-          return 1;
+      if (SUBTYPEOF(*s)) {
+	if((fun = FIND_LFUN(p->inherits[SUBTYPEOF(*s)].prog, LFUN_NOT)) == -1)
+	  return 1;
+      } else {
+	if((fun = FIND_LFUN(p, LFUN_NOT)) == -1)
+	  return 1;
+      }
 
       apply_low(s->u.object,
                 fun + p->inherits[SUBTYPEOF(*s)].identifier_level, 0);