diff --git a/src/pathways.jl b/src/pathways.jl
index 97b383d73334a78b7d70a29b079086fbe17531a7..d22550af4a91c0a4b0d35631276ecfe2ee0014a7 100644
--- a/src/pathways.jl
+++ b/src/pathways.jl
@@ -341,7 +341,7 @@ The `bmat` is updated with the outer produce of `qvec` with itself multiplied by
 When called with the first signature the tracker will be created from scratch if a tracker with that `key` does not exist.
 """
 function update_gradient_tracker_till_time!(walker::PathwayWalker, key::Tuple, new_time::VariableType)
-    if key in keys(walker.gradient_trackers)
+    if !(key in keys(walker.gradient_trackers))
         walker.gradient_trackers[key] = GradientTracker()
     end
     update_gradient_tracker_till_time!(walker.gradient_trackers[key], new_time)
@@ -425,7 +425,7 @@ function update_walker_gradient!(gradient::GradientBlock, walker::PathwayWalker,
 
     # update gradient tracker till start of gradient
     key = (gradient.scale, gradient.rotate)
-    update_gradient_tracker_till_time!(gradient, key, gradient_start_time)
+    update_gradient_tracker_till_time!(walker, key, gradient_start_time)
 
     # update qvec/bmat during gradient
     tracker = walker.gradient_trackers[key]