diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2.h
index c769841ca22e8336db2a5daa8749cc4d66993f48..9e69abde94c14887ea6254c90aae21715364e920 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2.h
@@ -39,6 +39,7 @@ namespace FlavorTagDiscriminants {
     std::vector<internal::VarFromJet> m_varsFromJet;
     std::vector<internal::TrackSequenceBuilder> m_trackSequenceBuilders;
     std::map<std::string, internal::OutNode> m_decorators;
+    float m_defaultValue;
 
     FTagDataDependencyNames m_dataDependencyNames;
 
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevel.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevel.h
index d6f135015d7320458ab332513ab43055db85e08e..8724497ad21ce186f5dbb46d6de2681bed6aa7ab 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevel.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevel.h
@@ -16,6 +16,7 @@
 #include <memory>
 #include <string>
 #include <map>
+#include <cmath>
 
 namespace FlavorTagDiscriminants {
 
@@ -27,7 +28,8 @@ namespace FlavorTagDiscriminants {
     DL2HighLevel(const std::string& nn_file_name,
                  FlipTagConfig = FlipTagConfig::STANDARD,
                  std::map<std::string, std::string> remap_scalar = {},
-                 TrackLinkType = TrackLinkType::TRACK_PARTICLE);
+                 TrackLinkType = TrackLinkType::TRACK_PARTICLE,
+                 float default_output_value = NAN);
     DL2HighLevel(DL2HighLevel&&);
     ~DL2HighLevel();
     void decorate(const xAOD::BTagging& btag) const;
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h
index 9cb926e1f5b75f101aef2de132c680ff64707c94..25ad36d5e099b8ca56d539ea28ff5aab176cb87a 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h
@@ -19,6 +19,7 @@ namespace FlavorTagDiscriminants {
     std::string flipTagConfig;
     std::map<std::string,std::string> variableRemapping;
     std::string trackLinkType;
+    float default_output_value = NAN;
   };
 
   class DL2Tool : public asg::AsgTool,
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h
index e57caa57e51b675f24b2c768d08e88c2f51596fd..b9d478da21c9d48824c6034fd0b36644896366a2 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h
@@ -73,6 +73,7 @@ namespace FlavorTagDiscriminants {
     std::string track_link_name;
     std::map<std::string,std::string> remap_scalar;
     TrackLinkType track_link_type;
+    float default_output_value;
   };
 
 
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/GNNTool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/GNNTool.h
index 6b4fd84d31faddfbee71b9fd378049824bcc6cd7..7b4684cf5198304eb7b435ecd7b94a1e1bb5cb18 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/GNNTool.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/GNNTool.h
@@ -8,7 +8,7 @@
 // Tool includes
 #include "AsgTools/AsgTool.h"
 #include "FlavorTagDiscriminants/IBTagDecorator.h"
-#include "FlavorTagDiscriminants/IJetTagDecorator.h"
+#include "FlavorTagDiscriminants/IJetTagConditionalDecorator.h"
 
 #include "FlavorTagDiscriminants/FlipTagEnums.h"
 #include "FlavorTagDiscriminants/FTagDataDependencyNames.h"
@@ -33,6 +33,7 @@ namespace FlavorTagDiscriminants {
     std::string flipTagConfig;
     std::map<std::string,std::string> variableRemapping;
     std::string trackLinkType;
+    float default_output_value = NAN;
   };
 
   //
@@ -40,10 +41,10 @@ namespace FlavorTagDiscriminants {
   // using GNN based taggers
   class GNNTool : public asg::AsgTool,
                   virtual public IBTagDecorator,
-                  virtual public IJetTagDecorator
+                  virtual public IJetTagConditionalDecorator
   {
 
-    ASG_TOOL_CLASS2(GNNTool, IBTagDecorator, IJetTagDecorator)
+    ASG_TOOL_CLASS2(GNNTool, IBTagDecorator, IJetTagConditionalDecorator)
     public:
       GNNTool(const std::string& name);
       ~GNNTool();
@@ -52,9 +53,11 @@ namespace FlavorTagDiscriminants {
 
       virtual void decorate(const xAOD::BTagging& btag) const override;
       virtual void decorate(const xAOD::Jet& jet) const override;
-
+      virtual void decorateWithDefaults(const xAOD::Jet& jet) const override;
       void decorate(const xAOD::Jet& jet, const SG::AuxElement& decorated) const;
 
+
+
       virtual std::set<std::string> getDecoratorKeys() const override;
       virtual std::set<std::string> getAuxInputKeys() const override;
       virtual std::set<std::string> getConstituentAuxInputKeys() const override;
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx
index c3de5842465218475209c96b20340b498217824c..5e279937bb9e86d82978086684ac588e4e182e06 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx
@@ -26,7 +26,8 @@ namespace FlavorTagDiscriminants {
     m_jetLink(jetLinkName),
     m_input_node_name(""),
     m_graph(new lwt::LightweightGraph(graph_config,graph_config.outputs.begin()->first)),
-    m_variable_cleaner(nullptr)
+    m_variable_cleaner(nullptr),
+    m_defaultValue(options.default_output_value)
   {
     // set up inputs
     if (graph_config.inputs.size() > 1) {
@@ -71,7 +72,7 @@ namespace FlavorTagDiscriminants {
     for (const auto& dec: m_decorators) {
       for (const auto& node: dec.second) {
         // save something that is clearly wrong
-        node.second(jet) = NAN;
+        node.second(jet) = m_defaultValue;
       }
     }
   }
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx
index 52ccd1adf6e10f938f9e8064eaad45e9d8c88821..ebc1b7c1f87dae88e5cd397fea02fd8116f977af 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx
@@ -24,7 +24,8 @@ namespace FlavorTagDiscriminants {
   DL2HighLevel::DL2HighLevel(const std::string& nn_file_name,
                              FlipTagConfig flip_config,
                              std::map<std::string,std::string> remap_scalar,
-                             TrackLinkType track_link_type):
+                             TrackLinkType track_link_type,
+                             float default_output_value):
     m_dl2(nullptr)
   {
     // get the graph
@@ -41,6 +42,7 @@ namespace FlavorTagDiscriminants {
 
     auto [input_config, trk_config, options] = dataprep::createGetterConfig(
       config, flip_config, remap_scalar, track_link_type);
+    options.default_output_value = default_output_value;
 
     m_dl2.reset(
       new DL2(
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx
index 7731212030cb08e708712b254df3785228238003..c2da503457cbb591b910d75d02f51d66ddd101bc 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx
@@ -16,6 +16,7 @@ namespace FlavorTagDiscriminants {
     declareProperty("flipTagConfig", m_props.flipTagConfig);
     declareProperty("variableRemapping", m_props.variableRemapping);
     declareProperty("trackLinkType", m_props.trackLinkType);
+    declareProperty("defaultOutputValue", m_props.default_output_value);
   }
   DL2Tool::~DL2Tool() {}
 
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx
index f0d6f326e45dc9aa7cd366e8b8335b67ff566e36..0cb41f923df97b33ece2c5e38c50ed83ff79784d 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx
@@ -216,6 +216,7 @@ namespace FlavorTagDiscriminants {
     flip = FlipTagConfig::STANDARD;
     track_link_name = "BTagTrackToJetAssociator";
     track_link_type = TrackLinkType::TRACK_PARTICLE;
+    default_output_value = NAN;
   }
 
   // ________________________________________________________________________
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNNTool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNNTool.cxx
index 2ac2f0f001e2df08723aa98e81b13fc423210186..0736036aab14231f3f42389c1cfd81aa0f8fb8a6 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNNTool.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNNTool.cxx
@@ -32,8 +32,9 @@ namespace FlavorTagDiscriminants {
       "user-defined mapping to rename the vars stored in the NN");
     declareProperty("trackLinkType", m_props.trackLinkType,
       "access tracks as IParticleContainer or as TrackParticleContainer");
+    declareProperty("defaultOutputValue", m_props.default_output_value);
   }
-  
+
   GNNTool::~GNNTool() {}
 
   StatusCode GNNTool::initialize() {
@@ -93,6 +94,13 @@ namespace FlavorTagDiscriminants {
   void GNNTool::decorate(const xAOD::Jet& jet) const {
     decorate(jet, jet);
   }
+  void GNNTool::decorateWithDefaults(const xAOD::Jet& jet) const {
+    for (const auto& dec: m_decorators) {
+      for (const auto& node: dec.second) {
+        node.second(jet) = m_props.default_output_value;
+      }
+    }
+  }
 
   void GNNTool::decorate(const xAOD::Jet& jet, const SG::AuxElement& btag) const {
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bjet/BjetFlavourTaggingConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bjet/BjetFlavourTaggingConfiguration.py
index 0caf664d77aa76060e958ce66fd1928fac7c1e90..ad0682abd82cdd41a8a3d3ab5cfb16a2a32c6caa 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bjet/BjetFlavourTaggingConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bjet/BjetFlavourTaggingConfiguration.py
@@ -190,6 +190,7 @@ def getFastFlavourTagging( flags, inputJets, inputVertex, inputTracks, isPFlow=F
                     # note that the tracks are associated to the jet as
                     # and IParticle container.
                     trackLinkType='IPARTICLE',
+                    defaultOutputValue=0
                 ),
             )
         )