function [yb zb z na]=pyzbar_bsr(yy,zz,m,bb,wl,wh)

% This code modifies pzbar.m in Bai Perron (1998) code to accomodate the
% band spectral regression approach suggested by Yamamoto and Perron (2013)

[nt,q1]=size(zz);

yb=zeros(nt,1);
zb=zeros(nt,(m+1)*q1);
z=zeros(nt,q1);
na=zeros(m+1,1);

[omega n]=selectmatreal(bb(1,1),wl,wh);
yf=omega*yy(1:bb(1,1),1);
zf=omega*zz(1:bb(1,1),:);
yb(1:bb(1,1),1)=yf;
zb(1:bb(1,1),1:q1)=zf;
z(1:bb(1,1),1:q1)=zf;
na(1,1)=n;

i=2;
while i <= m
    [omega n]=selectmatreal(bb(i,1)-bb(i-1,1),wl,wh);
    yf=omega*yy(bb(i-1,1)+1:bb(i,1),1);
    zf=omega*zz(bb(i-1,1)+1:bb(i,1),:);
    yb(bb(i-1,1)+1:bb(i,1),1)=yf;    
    zb(bb(i-1,1)+1:bb(i,1),(i-1)*q1+1:i*q1)=zf;
    z(bb(i-1,1)+1:bb(i,1),1:q1)=zf;
    na(i,1)=n;
    i=i+1;
end
[omega n]=selectmatreal(nt-bb(m,1),wl,wh);
yf=omega*yy(bb(m,1)+1:nt,1);
zf=omega*zz(bb(m,1)+1:nt,:);
yb(bb(m,1)+1:nt,1)=yf;
zb(bb(m,1)+1:nt,m*q1+1:(m+1)*q1)=zf;
z(bb(m,1)+1:nt,1:q1)=zf;
na(m+1,1)=n;

