Pushing at Google Tag Manager the same variable, but they are duplicated

Tag: google-analytics , google-tag-manager Author: qimu_lingye Date: 2014-01-21

Using Google Tag Manager, I use a variable in order to know the location of my application. Every time the user changes the section, a JS code pushes a new value to the 'location' variable, like this:

(function() {
    dataLayerGoogleTagManager.push({'location': 'tools'});

My problem comes when I check the Data Layer, it duplicates the variable 'location' with many different values. Debugging in the console:

enter image description here

Obviously, when I try to get the value of 'location', the result is not what I want. Do you know how to fix this?

Thank you for any help you can provide

Why is that "obviously" wrong ? It's the way it is described in the GTM documentation and works fine at least for me (unless you try to access the datalayer manually instead of via macros in which case you'd need to access your variables via the index dataLayer[1],dataLayer[2] ... dataLayer[n] ).
@EikePierstorff You are right, this is how it is described in the GTM documentation, but I need to find out where the user is at that moment, I would expect the value is overwritten.
If you have a macro "location" it will always take the most recent value that's pushed to the dataLayer, no matter how many location value there are. At least that's how it works for me - if it doesn't work for you I assume there is something else wrong.