JavaScript Closures e setTimeout

Closures são algo que ainda não compreendo totalmente em JS. Eu acho que isso é uma questão de fechamento. Estou tentando criar uma barra de progresso. A cada x segundos, quero aumentar a largura de um DIV. Aqui está a parte que deve fazer isso:

for(i=0;i<=counter;i++){
    setTimeout(function (){
        myDiv.style.width = wIncrement+"px"
        timeIncrement++;
        wIncrement++;
    },timeIncrement*1000);
}

O que eu quero que aconteça é a cada x segundos, aumente o tamanho da barra. Se é claro, não é isso que está acontecendo.

Tenho certeza (espero) que esse seja um problema de fechamento, mas a sintaxe para misturar com um setTimout me deixa completamente confusa. Alguém pode me ajudar a entender os conceitos necessários para corrigir o problema de fechamento neste exemplo?

questionAnswers(2)

yourAnswerToTheQuestion