From 773a44c0726ae7a90654b81e017925cec70cc166 Mon Sep 17 00:00:00 2001
From: Bertrand Coconnier <bcoconni@users.sf.net>
Date: Sat, 8 May 2021 18:50:34 +0200
Subject: [PATCH] Tentative fix for the issue #2581 (propeller spinning
 indefinitely after aborting crank).

---
 src/FDM/JSBSim/models/propulsion/FGPiston.cpp    | 4 +++-
 src/FDM/JSBSim/models/propulsion/FGPropeller.cpp | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/FDM/JSBSim/models/propulsion/FGPiston.cpp b/src/FDM/JSBSim/models/propulsion/FGPiston.cpp
index 0a28c6d6f..edcbead4a 100644
--- a/src/FDM/JSBSim/models/propulsion/FGPiston.cpp
+++ b/src/FDM/JSBSim/models/propulsion/FGPiston.cpp
@@ -521,7 +521,9 @@ void FGPiston::Calculate(void)
   // Filters out negative powers.
   // TODO: static_friction_HP should not be taken into account while the engine
   // is not started.
-  Thruster->Calculate(max(HP * hptoftlbssec, 0.));
+  double power = HP * hptoftlbssec;
+  if (RPM <= 0.1) power = max(power, 0.0);
+  Thruster->Calculate(power);
 
   RunPostFunctions();
 }
diff --git a/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp b/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp
index 08bdbf70e..6e510de4b 100644
--- a/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp
+++ b/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp
@@ -201,7 +201,7 @@ void FGPropeller::ResetToIC(void)
 
 double FGPropeller::Calculate(double EnginePower)
 {
-  FGColumnVector3 vDXYZ = MassBalance->StructuralToBody(vActingXYZn);
+  FGColumnVector3 vDXYZ = MassBalance->StructuralToBody(vXYZn);
   const FGMatrix33& mT = Transform();
   // Local air velocity is obtained from Stevens & Lewis' "Aircraft Control and
   // Simualtion (3rd edition)" eqn 8.2-1