diff --git a/Decay/FormFactors/KMatrix.h b/Decay/FormFactors/KMatrix.h
--- a/Decay/FormFactors/KMatrix.h
+++ b/Decay/FormFactors/KMatrix.h
@@ -1,113 +1,115 @@
 // -*- C++ -*-
 #ifndef Herwig_KMatrix_H
 #define Herwig_KMatrix_H
 //
 // This is the declaration of the KMatrix class.
 //
 
 #include "ThePEG/Interface/Interfaced.h"
 #include "Herwig/Decay/IsoSpin.h"
 #include "KMatrix.fh"
 #include <boost/numeric/ublas/matrix.hpp>
 
 namespace Herwig {
 
 using namespace ThePEG;
 
 /**
  * The KMatrix class is a base class for the implementation of
  * K-matrix parameterizations in Herwig
  *
  * @see \ref KMatrixInterfaces "The interfaces"
  * defined for KMatrix.
  */
 class KMatrix: public Interfaced {
 
 public:
   
   /**
    * Enum for the possible channels
    */
   enum Channels { PiPi, KPi, KEta, KEtaPrime};
 
 public:
 
   /**
    * The default constructor.
    */
   KMatrix(FlavourInfo flavour=FlavourInfo(),
 	  vector<Channels> channels=vector<Channels>(),
 	  vector<Energy2> poles=vector<Energy2>());
 
   /**
    *   The quantum numbers of the K-matrix
    */
   FlavourInfo flavourInfo() const {
     return flavour_;
   };
 
   /**
    *  Compute the K-matrix for a given scale
+   * @param s The scale
+   * @param Whether ot not to multiply by \f$\prod_i(1-s/m^2_i\f$ to regularise the poles
    */
-  virtual boost::numeric::ublas::matrix<double> K(Energy2 s) = 0;
+  virtual boost::numeric::ublas::matrix<double> K(Energy2 s, bool multiplyByPoles=false) = 0;
 
   /**
    *  Vector containing the locations of the poles
    */
   const vector<Energy2> & poles() const {return poles_;}
   
 public:
 
   /** @name Functions used by the persistent I/O system. */
   //@{
   /**
    * Function used to write out object persistently.
    * @param os the persistent output stream written to.
    */
   void persistentOutput(PersistentOStream & os) const;
 
   /**
    * Function used to read in object persistently.
    * @param is the persistent input stream read from.
    * @param version the version number of the object when written.
    */
   void persistentInput(PersistentIStream & is, int version);
   //@}
 
   /**
    * The standard Init function used to initialize the interfaces.
    * Called exactly once for each class by the class description system
    * before the main function starts or
    * when this class is dynamically loaded.
    */
   static void Init();
 
 private:
 
   /**
    * The assignment operator is private and must never be called.
    * In fact, it should not even be implemented.
    */
   KMatrix & operator=(const KMatrix &);
 
 private:
 
   /**
    *   The quantum numbers for the K-matrix
    */
   FlavourInfo flavour_;
   
   /**
    *   The mesons in the various channels
    */
   vector<Channels> channels_;
 
   /**
    *  The positions of the poles
    */
   vector<Energy2> poles_;
 };
 
 }
 
 #endif /* Herwig_KMatrix_H */
diff --git a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc
--- a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc
+++ b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc
@@ -1,98 +1,98 @@
 // -*- C++ -*-
 //
 // This is the implementation of the non-inlined, non-templated member
 // functions of the KPiIHalfFOCUSKMatrix class.
 //
 
 #include "KPiIHalfFOCUSKMatrix.h"
 #include "ThePEG/Interface/ClassDocumentation.h"
 #include "ThePEG/EventRecord/Particle.h"
 #include "ThePEG/Repository/UseRandom.h"
 #include "ThePEG/Repository/EventGenerator.h"
 #include "ThePEG/Utilities/DescribeClass.h"
 #include "ThePEG/Persistency/PersistentOStream.h"
 #include "ThePEG/Persistency/PersistentIStream.h"
 
 using namespace Herwig;
 
 KPiIHalfFOCUSKMatrix::KPiIHalfFOCUSKMatrix()
   : KMatrix(FlavourInfo(IsoSpin::IHalf,IsoSpin::I3Unknown,
 			Strangeness::PlusOne,Charm::Zero,
 			Beauty::Zero),
 	    vector<Channels>({KMatrix::KPi,KMatrix::KEtaPrime}),
 	    vector<Energy2>({1.7919*GeV2})),
     C11_({0.79299,-0.15099,0.00811}),
     C22_({0.15040,-0.038266,0.0022596}),
     C12_({0.17054,-0.0219,0.00085655}),
     g_({0.31072*GeV,-0.02323*GeV}),
     sHalf_(0.23*GeV2)
 {}
 
 IBPtr KPiIHalfFOCUSKMatrix::clone() const {
   return new_ptr(*this);
 }
 
 IBPtr KPiIHalfFOCUSKMatrix::fullclone() const {
   return new_ptr(*this);
 }
 
 void KPiIHalfFOCUSKMatrix::persistentOutput(PersistentOStream & os) const {
   os << C11_ << C22_ << C12_ << ounit(sHalf_,GeV2) << ounit(sNorm_,GeV2);
 }
 
 void KPiIHalfFOCUSKMatrix::persistentInput(PersistentIStream & is, int) {
   is >> C11_ >> C22_ >> C12_ >> iunit(sHalf_,GeV2) >> iunit(sNorm_,GeV2);
 }
 
 // The following static variable is needed for the type
 // description system in ThePEG.
 DescribeClass<KPiIHalfFOCUSKMatrix,KMatrix>
 describeHerwigKPiIHalfFOCUSKMatrix("Herwig::KPiIHalfFOCUSKMatrix", "HwFormFactors.so");
 
 void KPiIHalfFOCUSKMatrix::Init() {
 
   static ClassDocumentation<KPiIHalfFOCUSKMatrix> documentation
     ("The KPiIHalfFOCUSKMatrix class implements the K-matrix fit of "
      "the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the I=1/2 "
      "component of the Kpi K-matrix.",
      "The KPiIHalfFOCUSKMatrix class implements the K-matrix fit of "
      "the FOCUS collaboration \\cite{Pennington:2007se} for the $I=1/2$ "
      "component of the $K\\pi$ K-matrix.",
      "\\bibitem{Pennington:2007se}"
      "J.~M.~Link {\\it et al.} [FOCUS Collaboration],"
      "%``Dalitz plot analysis of the $D^{+} \\to K^{-} \\pi^{+} \\pi^{+}$ decay in the FOCUS experiment,''"
      "Phys.\\ Lett.\\ B {\\bf 653} (2007) 1"
      "doi:10.1016/j.physletb.2007.06.070"
      "[arXiv:0705.2248 [hep-ex]]."
      "%%CITATION = doi:10.1016/j.physletb.2007.06.070;%%"
      "%79 citations counted in INSPIRE as of 14 Jan 2020");
 
 }
 
 void KPiIHalfFOCUSKMatrix::doinit() {
   KMatrix::doinit();
   Energy mK = getParticleData(ParticleID::Kplus)->mass();
   Energy mpi= getParticleData(ParticleID::piplus)->mass();
   sNorm_ = sqr(mK)+sqr(mpi);
 }
 
-boost::numeric::ublas::matrix<double> KPiIHalfFOCUSKMatrix::K(Energy2 s) {
+boost::numeric::ublas::matrix<double> KPiIHalfFOCUSKMatrix::K(Energy2 s, bool includePoles) {
   double st = s/sNorm_-1.;
   double pre = (s-sHalf_)/sNorm_;
-  Energy2 denom = poles()[0]-s;
+  Energy2 denom = !includePoles ? poles()[0]-s : poles()[0];
   boost::numeric::ublas::matrix<double> output =
     boost::numeric::ublas::zero_matrix<double>(2,2);
   output(0,0) = g_[0]*g_[0]/denom;
   output(0,1) = g_[0]*g_[1]/denom;
   output(1,1) = g_[1]*g_[1]/denom;
-  double param=1.;
+  double param = !includePoles ? 1. : (1.-s/poles()[0]);
   for(unsigned int ix=0;ix<C11_.size();++ix) {
     output(0,0) += C11_[ix]*param;
-    output(1,1)+= C22_[ix]*param;
-    output(0,1)+= C12_[ix]*param;
+    output(1,1) += C22_[ix]*param;
+    output(0,1) += C12_[ix]*param;
     param *= st;
   }
   output(1,0) = output(0,1);
   output *= pre;
   return output;
 }
diff --git a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h
--- a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h
+++ b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h
@@ -1,123 +1,125 @@
 // -*- C++ -*-
 #ifndef Herwig_KPiIHalfFOCUSKMatrix_H
 #define Herwig_KPiIHalfFOCUSKMatrix_H
 //
 // This is the declaration of the KPiIHalfFOCUSKMatrix class.
 //
 
 #include "KMatrix.h"
 
 namespace Herwig {
 
 using namespace ThePEG;
 
 /**
  * The KPiIHalfFOCUSKMatrix class implements the K-matrix fit of
  * the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the \f$I=\frac12\f$
  * component of the \f$K\pi\f$ K-matrix. 
  *
  * @see \ref KPiIHalfFOCUSKMatrixInterfaces "The interfaces"
  * defined for KPiIHalfFOCUSKMatrix.
  */
 class KPiIHalfFOCUSKMatrix: public KMatrix {
 
 public:
 
   /**
    * The default constructor.
    */
   KPiIHalfFOCUSKMatrix();
 
   /**
    *  Compute the K-matrix for a given scale
+   * @param s The scale
+   * @param Whether or not to multiply by \f$\prod_i(1-s/m^2_i\f$ to regularise the poles
    */
-  virtual boost::numeric::ublas::matrix<double> K(Energy2 s);
+  virtual boost::numeric::ublas::matrix<double> K(Energy2 s, bool multiplyByPoles=false);
 
 public:
 
   /** @name Functions used by the persistent I/O system. */
   //@{
   /**
    * Function used to write out object persistently.
    * @param os the persistent output stream written to.
    */
   void persistentOutput(PersistentOStream & os) const;
 
   /**
    * Function used to read in object persistently.
    * @param is the persistent input stream read from.
    * @param version the version number of the object when written.
    */
   void persistentInput(PersistentIStream & is, int version);
   //@}
 
   /**
    * The standard Init function used to initialize the interfaces.
    * Called exactly once for each class by the class description system
    * before the main function starts or
    * when this class is dynamically loaded.
    */
   static void Init();
 
 protected:
 
   /** @name Clone Methods. */
   //@{
   /**
    * Make a simple clone of this object.
    * @return a pointer to the new object.
    */
   virtual IBPtr clone() const;
 
   /** Make a clone of this object, possibly modifying the cloned object
    * to make it sane.
    * @return a pointer to the new object.
    */
   virtual IBPtr fullclone() const;
   //@}
 protected:
 
   /** @name Standard Interfaced functions. */
   //@{
   /**
    * Initialize this object after the setup phase before saving an
    * EventGenerator to disk.
    * @throws InitException if object could not be initialized properly.
    */
   virtual void doinit();
   //@}
 
 private:
 
   /**
    * The assignment operator is private and must never be called.
    * In fact, it should not even be implemented.
    */
   KPiIHalfFOCUSKMatrix & operator=(const KPiIHalfFOCUSKMatrix &);
 
 private:
 
   /**
    *  Constants \f$C_{ij,k}\f$ from Eqn 8
    */
   vector<double> C11_,C22_,C12_;
 
   /**
    *  Couplings for the resonances
    */
   vector<Energy> g_;
 
   /**
    *   Adler zero position
    */
   Energy2 sHalf_;
 
   /**
    *  Normalisation scale
    */
   Energy2 sNorm_;
 };
 
 }
 
 #endif /* Herwig_KPiIHalfFOCUSKMatrix_H */
diff --git a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc
--- a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc
+++ b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc
@@ -1,86 +1,86 @@
 // -*- C++ -*-
 //
 // This is the implementation of the non-inlined, non-templated member
 // functions of the KPiIThreeHalfFOCUSKMatrix class.
 //
 
 #include "KPiIThreeHalfFOCUSKMatrix.h"
 #include "ThePEG/Interface/ClassDocumentation.h"
 #include "ThePEG/EventRecord/Particle.h"
 #include "ThePEG/Repository/UseRandom.h"
 #include "ThePEG/Repository/EventGenerator.h"
 #include "ThePEG/Utilities/DescribeClass.h"
 #include "ThePEG/Persistency/PersistentOStream.h"
 #include "ThePEG/Persistency/PersistentIStream.h"
 
 using namespace Herwig;
 
 KPiIThreeHalfFOCUSKMatrix::KPiIThreeHalfFOCUSKMatrix()
   : KMatrix(FlavourInfo(IsoSpin::IThreeHalf,IsoSpin::I3Unknown,
 			Strangeness::PlusOne,Charm::Zero,
 			Beauty::Zero),
 	    vector<Channels>({KMatrix::KPi})),
     D_({-0.22147,0.026637,-0.00092057}),
     sThreeHalf_(0.27*GeV2)
 {}
 
 IBPtr KPiIThreeHalfFOCUSKMatrix::clone() const {
   return new_ptr(*this);
 }
 
 IBPtr KPiIThreeHalfFOCUSKMatrix::fullclone() const {
   return new_ptr(*this);
 }
 
 void KPiIThreeHalfFOCUSKMatrix::persistentOutput(PersistentOStream & os) const {
   os << D_ << ounit(sThreeHalf_,GeV2) << ounit(sNorm_,GeV2);
 }
 
 void KPiIThreeHalfFOCUSKMatrix::persistentInput(PersistentIStream & is, int) {
   is >> D_ >> iunit(sThreeHalf_,GeV2) >> iunit(sNorm_,GeV2);
 }
 
 // The following static variable is needed for the type
 // description system in ThePEG.
 DescribeClass<KPiIThreeHalfFOCUSKMatrix,KMatrix>
 describeHerwigKPiIThreeHalfFOCUSKMatrix("Herwig::KPiIThreeHalfFOCUSKMatrix", "HwFormFactors.so");
 
 void KPiIThreeHalfFOCUSKMatrix::Init() {
 
   static ClassDocumentation<KPiIThreeHalfFOCUSKMatrix> documentation
     ("The KPiIThreeHalfFOCUSKMatrix class implements the K-matrix fit of "
      "the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the I=3/2 "
      "component of the Kpi K-matrix.",
      "The KPiIThreeHalfFOCUSKMatrix class implements the K-matrix fit of "
      "the FOCUS collaboration \\cite{Pennington:2007se} for the $I=3/2$ "
      "component of the $K\\pi$ K-matrix.",
      "\\bibitem{Pennington:2007se}"
      "J.~M.~Link {\\it et al.} [FOCUS Collaboration],"
      "%``Dalitz plot analysis of the $D^{+} \\to K^{-} \\pi^{+} \\pi^{+}$ decay in the FOCUS experiment,''"
      "Phys.\\ Lett.\\ B {\\bf 653} (2007) 1"
      "doi:10.1016/j.physletb.2007.06.070"
      "[arXiv:0705.2248 [hep-ex]]."
      "%%CITATION = doi:10.1016/j.physletb.2007.06.070;%%"
      "%79 citations counted in INSPIRE as of 14 Jan 2020");
 
 }
 
 void KPiIThreeHalfFOCUSKMatrix::doinit() {
   KMatrix::doinit();
   Energy mK = getParticleData(ParticleID::Kplus)->mass();
   Energy mpi= getParticleData(ParticleID::piplus)->mass();
   sNorm_ = sqr(mK)+sqr(mpi);
 }
 
-boost::numeric::ublas::matrix<double> KPiIThreeHalfFOCUSKMatrix::K(Energy2 s) {
+boost::numeric::ublas::matrix<double> KPiIThreeHalfFOCUSKMatrix::K(Energy2 s,bool) {
   double st = s/sNorm_-1.;
   double param=1.;
   boost::numeric::ublas::matrix<double> output =
     boost::numeric::ublas::zero_matrix<double>(1,1);
   for(unsigned int ix=0;ix<D_.size();++ix) {
     output(0,0) += D_[ix]*param;
     param *= st;
   }
   output *=(s-sThreeHalf_)/sNorm_;
   return output;
 }
diff --git a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h
--- a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h
+++ b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h
@@ -1,118 +1,120 @@
 // -*- C++ -*-
 #ifndef Herwig_KPiIThreeHalfFOCUSKMatrix_H
 #define Herwig_KPiIThreeHalfFOCUSKMatrix_H
 //
 // This is the declaration of the KPiIThreeHalfFOCUSKMatrix class.
 //
 
 #include "KMatrix.h"
 
 namespace Herwig {
 
 using namespace ThePEG;
 
 /**
  * The KPiIThreeHalfFOCUSKMatrix class implements the K-matrix fit of
  * the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the \f$I=\frac32\f$
  * component of the \f$K\pi\f$ K-matrix. 
  *
  * @see \ref KPiIThreeHalfFOCUSKMatrixInterfaces "The interfaces"
  * defined for KPiIThreeHalfFOCUSKMatrix.
  */
 class KPiIThreeHalfFOCUSKMatrix: public KMatrix {
 
 public:
 
   /**
    * The default constructor.
    */
   KPiIThreeHalfFOCUSKMatrix();
 
   /**
    *  Compute the K-matrix for a given scale
+   * @param s The scale
+   * @param Whether ot not to multiply by \f$\prod_i(1-s/m^2_i\f$ to regularise the poles
    */
-  virtual boost::numeric::ublas::matrix<double> K(Energy2 s);
+  virtual boost::numeric::ublas::matrix<double> K(Energy2 s, bool multiplyByPoles=false);
 
 public:
 
   /** @name Functions used by the persistent I/O system. */
   //@{
   /**
    * Function used to write out object persistently.
    * @param os the persistent output stream written to.
    */
   void persistentOutput(PersistentOStream & os) const;
 
   /**
    * Function used to read in object persistently.
    * @param is the persistent input stream read from.
    * @param version the version number of the object when written.
    */
   void persistentInput(PersistentIStream & is, int version);
   //@}
 
   /**
    * The standard Init function used to initialize the interfaces.
    * Called exactly once for each class by the class description system
    * before the main function starts or
    * when this class is dynamically loaded.
    */
   static void Init();
 
 protected:
 
   /** @name Clone Methods. */
   //@{
   /**
    * Make a simple clone of this object.
    * @return a pointer to the new object.
    */
   virtual IBPtr clone() const;
 
   /** Make a clone of this object, possibly modifying the cloned object
    * to make it sane.
    * @return a pointer to the new object.
    */
   virtual IBPtr fullclone() const;
   //@}
 protected:
 
   /** @name Standard Interfaced functions. */
   //@{
   /**
    * Initialize this object after the setup phase before saving an
    * EventGenerator to disk.
    * @throws InitException if object could not be initialized properly.
    */
   virtual void doinit();
   //@}
 
 private:
 
   /**
    * The assignment operator is private and must never be called.
    * In fact, it should not even be implemented.
    */
   KPiIThreeHalfFOCUSKMatrix & operator=(const KPiIThreeHalfFOCUSKMatrix &);
 
 private:
 
   /**
    *  Constants \f$D_{22,i}\f$ from Eqn 9
    */
   vector<double> D_;
 
   /**
    *   Adler zero position
    */
   Energy2 sThreeHalf_;
 
   /**
    *  Normalisation scale
    */
   Energy2 sNorm_;
 };
 
 }
 
 #endif /* Herwig_KPiIThreeHalfFOCUSKMatrix_H */