diff --git a/decoder/src/Decoder.cpp b/decoder/src/Decoder.cpp
index 08f4de8d984b3ea6d258b3d3756829de275a29ff..bcb25bd30e5229a8c56e10fb7b58be63536d323d 100644
--- a/decoder/src/Decoder.cpp
+++ b/decoder/src/Decoder.cpp
@@ -28,7 +28,7 @@ void Decoder::decode(BaseConfig & config, std::size_t beamSize, bool debug)
     int chosenTransition = -1;
 
     for (unsigned int i = 0; i < prediction.size(0); i++)
-      if ((chosenTransition == -1 or prediction[i].item<float>() > prediction[chosenTransition].item<float>()) and machine.getTransitionSet().getTransition(i))
+      if ((chosenTransition == -1 or prediction[i].item<float>() > prediction[chosenTransition].item<float>()) and machine.getTransitionSet().getTransition(i)->appliable(config))
         chosenTransition = i;
 
     if (chosenTransition == -1)