--- a/R/plotPWmap.R
+++ b/R/plotPWmap.R
@@ -86,16 +86,17 @@
         stop("item.subset misspecified. Use 'all' or vector of at least two valid item indices/names.")
     } else {
       if (length(item.subset)>1 && all(item.subset %in% rownames(as.matrix(tl)))) {
-        iloc  <- iloc[item.subset]
-        ise   <- ise[item.subset]
-        ifitZ <- ifitZ[item.subset]
         tl    <- tl[item.subset]
-
+        keep.subset <- c()
         for (i in rownames(as.matrix(tl)))
           if (tl[i]==1)
             keep.subset<-c(keep.subset,i)
           else
             keep.subset<-c(keep.subset,paste(i,1:tl[i],sep=":"))
+
+        iloc  <- iloc[keep.subset]
+        ise   <- ise[keep.subset]
+        ifitZ <- ifitZ[item.subset]
         tt<-tt[keep.subset,]
       }
       else if(length(item.subset)!=1 || !(item.subset=="all"))
@@ -115,16 +116,17 @@
     }
     else {
       if (length(item.subset)>1 && all(item.subset %in% 1:length(tl))) {
-        iloc  <- iloc[item.subset]
-        ise   <- ise[item.subset]
-        ifitZ <- ifitZ[item.subset]
         tl    <- tl[item.subset]
-
+        keep.subset <- c()
         for (i in rownames(as.matrix(tl)))
           if (tl[i]==1)
             keep.subset<-c(keep.subset,i)
           else
             keep.subset<-c(keep.subset,paste(i,1:tl[i],sep=":"))
+
+        iloc  <- iloc[keep.subset]
+        ise   <- ise[keep.subset]
+        ifitZ <- ifitZ[item.subset]
         tt<-tt[keep.subset,]
       }
       else
@@ -255,15 +257,15 @@
       zt <- rep(ifitZ,times=tl)
 
     if (!horiz){
-       if (ici>0) ## draw confidence intervals
-         arrows(zt,iloc+ici*ise, zt,iloc-ici*ise, angle=90, code=3, length=0.04,
-              col=itemCI$col, lty=itemCI$lty)
-       points(zt,iloc,pch=item.pch,cex=cex.pch)
-       text(zt,iloc,rownames(tt),cex=cex.gen,pos=4)
+      if (ici>0) ## draw confidence intervals
+        arrows(zt,iloc+ici*ise, zt,iloc-ici*ise, angle=90, code=3, length=0.04,
+               col=itemCI$col, lty=itemCI$lty)
+      points(zt,iloc,pch=item.pch,cex=cex.pch)
+      text(zt,iloc,rownames(tt),cex=cex.gen,pos=4)
     } else {
-       if (ici>0) ## draw confidence intervals
-         arrows(iloc+ici*ise, zt,iloc-ici*ise,zt, angle=90, code=3, length=0.04,
-              col=itemCI$col, lty=itemCI$lty)
+      if (ici>0) ## draw confidence intervals
+        arrows(iloc+ici*ise, zt,iloc-ici*ise,zt, angle=90, code=3, length=0.04,
+               col=itemCI$col, lty=itemCI$lty)
       points(iloc, zt,pch=item.pch,cex=cex.pch)
       text(iloc,zt, rownames(tt),cex=cex.gen,pos=4)
     }
