function [tplot,xplot]=memoscIntegrate(p,xstart,opts,tend)

wminplot=-0.1; wmaxplot=1.1;
x1minplot=-4e4/1000; x1maxplot=4e4/1000;
tstart=0; 

tic
tplot = []; xplot = [];
RegionNum=1; Region(RegionNum)=p.Region;
RegionStartTime(RegionNum)=tstart;
while 1
%  opts=odeset('RelTol',1e-5,'AbsTol',1e-5,'InitialStep',1e-7,'MaxStep',1e-4,'Events',@vteamEvents);
  [t,x,te,ye,ie] = ode45(@memoscRHSRegions,[tstart,tend],xstart,opts,p);
  tplot = [tplot; t];
  xplot = [xplot' x']';
  tstart = t(end);
  xstart = x(end,:);
  disp(sprintf('Leaving Region: %d at time: %10.8f, ',p.Region,tstart));
  if (isempty(ie)); break; end
  newRegion=0;
  if p.Region==1 && ie==1; newRegion=2; end
  if p.Region==1 && ie==2; newRegion=3; end
  if p.Region==1 && ie==3; newRegion=4; end
  if p.Region==1 && ie==4; newRegion=5; end
  if p.Region==2 && ie==1; newRegion=1; end
  if p.Region==2 && ie==2; newRegion=6; end
  if p.Region==3 && ie==1; newRegion=1; end
  if p.Region==3 && ie==2; newRegion=7; end
  if p.Region==4 && ie==1; newRegion=1; end
  if p.Region==4 && ie==2; newRegion=7; end
  if p.Region==5 && ie==1; newRegion=1; end
  if p.Region==5 && ie==2; newRegion=6; end
  if p.Region==6; newRegion=1; end
  if p.Region==7; newRegion=1; end
  p.Region=newRegion;
  disp(sprintf('Entering Region: %d, t: %10.8f, x4: %6.4e, x5: %6.4e',p.Region,tstart,xstart(4),xstart(5)));
  RegionEndTime(RegionNum)=tstart;
  RegionNum=RegionNum+1;  Region(RegionNum)=p.Region;
  RegionStartTime(RegionNum)=tstart;
end
RegionEndTime(RegionNum)=tend;
xend=x(end,:);


