Here is the Python code if you are interested
def DominantCycle_ZeroCrossings (Close, PeriodH=48, PeriodL=10, Period=20, delta=0.7, return_cycle=1):
BP = np.zeros(len(Close))
HP = np.zeros(len(Close))
Peak=np.zeros(len(BP))
Real=np.zeros(len(Peak))
DC=np.zeros (len(BP))
counter=np.zeros (len(BP))

alpha2 = (np.cos(.25*delta*360 / Period) + np.sin (.25*delta*360 / Period) - 1) / np.cos(.25*delta*360 / Period)
beta1 = np.cos(360 / Period)
gamma1 = 1.0 / np.cos( 360 * delta / Period)
alpha1 = gamma1 - np.sqrt((gamma1 * gamma1) - 1)

b = [0.5 * (1 - alpha1), 0, -0.5 * (1 - alpha1)]
a = [1, -beta1 * (1 + alpha1), alpha1]

for i in range (2, len(BP)):
HP[i] = (1 + alpha2 / 2)*(Close[i] - Close[i-1]) + (1- alpha2)*HP[i-1]
BP[i] = .5*(1 - alpha1)*(HP[i] - HP[i-2]) + beta1*(1 + alpha1)*BP[i-1] - alpha1*BP[i-2]
BP[i]=b[0] * (Close[i] - Close[i - 2])-a[1]*BP[i-1]-a[2]*BP[i-2]

Peak[i]=0.991*Peak[i-1]

if np.abs (BP[i]) > Peak[i]:
Peak[i]=np.abs (BP[i])
if Peak[i] != 0:
Real[i]=BP[i]/Peak[i]

DC[i]=DC[i-1]
if DC[i] < 6:
DC[i]=6
counter[i]=counter[i-1]+1

Signal_crossunder = (Real[i] < 0) & (Real[i-1] > 0)
Signal_crossover = (Real[i] > 0) & (Real[i-1] < 0)

if Signal_crossunder | Signal_crossover:
DC[i]=2*counter[i]
if 2*counter[i] > 1.25 * DC[i-1]:
DC[i]=1.25*DC[i-1]
if 2*counter[i] < 0.8 * DC[i-1]:
DC[i] = 0.8 * DC[i-1]

counter[i]=0
return DC