diff --git a/fd/derivative.py b/fd/derivative.py
index cd74b0fe5cb6e370e145160ddf7738b150085a79..b6f6839f68e58a3a779bf560011e5f5c48d7194b 100644
--- a/fd/derivative.py
+++ b/fd/derivative.py
@@ -290,6 +290,8 @@ def expand_diff_full(expr, functions=None, constants=None):
             diff_args = {'target': e.target, 'superscript': e.superscript}
             diff_inner = e.args[0]
             diff_inner = visit(diff_inner)
+            if diff_inner.func not in (sp.Add, sp.Mul):
+                return e
             for term in diff_inner.args if diff_inner.func == sp.Add else [diff_inner]:
                 independent_terms = 1
                 dependent_terms = []