prepanel.cbH <- function(y, ly, uy, subscripts, ...){
  ly <- as.numeric(ly[subscripts])
  uy <- as.numeric(uy[subscripts])
  y <- as.numeric(y[subscripts])
  list(ylim=range(y, uy, ly, finite=TRUE))
}

panel.cbH <- function(x, y, ly, uy, subscripts, cty,
                      col.line=plot.line$col, lwd=plot.line$lwd,
                      desloc=NULL, fill=1, alpha=0.1, ...){
  plot.line <- trellis.par.get("plot.line")
  if(is.null(desloc)) desloc <- rep(0, length(uy))
  y <- as.numeric(y)
  x <- as.numeric(x)
  or <- order(x)
  ly <- as.numeric(ly[subscripts])
  uy <- as.numeric(uy[subscripts])
  xo <- x[or]; yo <- y[or]
  lyo <- ly[or]; uyo <- uy[or]
  desl <- desloc[subscripts]
  if(cty=="bands"){
    panel.polygon(c(xo, rev(xo)), c(lyo, rev(uyo)),
                  col=fill, alpha=alpha, border=NA)
    panel.lines(xo, lyo, lty=3, lwd=0.5, col=col.line)
    panel.lines(xo, uyo, lty=3, lwd=0.5, col=col.line)
  }
  if(cty=="bars"){
    panel.arrows(xo+desl, lyo,
                 xo+desl, uyo,
                 length=0.05, code=3, angle=90, col=col.line, lwd=lwd)
    panel.points(xo+desl, yo, pch=19, col=col.line)
  }
  panel.xyplot(x+desl, y,
               subscripts=subscripts, col.line=col.line, lwd=lwd, ...)
}
