diff --git a/src/index.js b/src/index.js
index 1a368fb..78d3c9b 100755
--- a/src/index.js
+++ b/src/index.js
@@ -121,7 +121,7 @@
     new_tag = 'ADR';
   }
   if (new_tag) {
-    columns[3] = columns[4] = new_tag;
+    columns[4] = new_tag;
     columns[5] = '_';
     if (global.standalone) {
       process.stdout.write(fileheader);
diff --git a/test/test.js b/test/test.js
index 8c2ce1d..ee1d498 100644
--- a/test/test.js
+++ b/test/test.js
@@ -6,15 +6,15 @@
     // Modify the command based on your script's location and options
     const command = 'node src/index.js -s < test/data/ndy.conllu';
     const stdout = execSync(command).toString();
-    expect(stdout).toContain('😂\t_\tEMOIMG\tEMOIMG');
+    expect(stdout).toContain('😂\t_\t_\tEMOIMG');
     var emoimg_count = (stdout.match(/EMOIMG/g) || []).length;
-    expect(emoimg_count).toBe(382);
+    expect(emoimg_count).toBe(191);
     var ascimg_count = (stdout.match(/EMOASC/g) || []).length;
-    expect(ascimg_count).toBe(60);
-    var ascimg_count = (stdout.match(/URL/g) || []).length;
-    expect(ascimg_count).toBe(8);
-    var adr_count = (stdout.match(/ADR/g) || []).length;
-    expect(adr_count).toBe(2);
+    expect(ascimg_count).toBe(30);
+    var url_count = (stdout.match(/\tURL\t/g) || []).length;
+    expect(url_count).toBe(4);
+    var adr_count = (stdout.match(/\tADR\t/g) || []).length;
+    expect(adr_count).toBe(1);
     var eot_count = (stdout.match(/\n# eot/g) || []).length;
     expect(eot_count).toBe(1);
     var eof_count = (stdout.match(/\n# eof/g) || []).length;
@@ -27,15 +27,15 @@
   test('Test full mode', (done) => {
     const command = 'node src/index.js < test/data/ndy.conllu';
     const stdout = execSync(command).toString();
-      expect(stdout).toContain('😂\t_\tEMOIMG\tEMOIMG');
+      expect(stdout).toContain('😂\t_\t_\tEMOIMG');
       var emoimg_count = (stdout.match(/EMOIMG/g) || []).length;
-      expect(emoimg_count).toBe(382);
+      expect(emoimg_count).toBe(191);
       var ascimg_count = (stdout.match(/EMOASC/g) || []).length;
-      expect(ascimg_count).toBe(60);
-      var ascimg_count = (stdout.match(/URL/g) || []).length;
-      expect(ascimg_count).toBe(8);
-      var adr_count = (stdout.match(/ADR/g) || []).length;
-      expect(adr_count).toBe(2);
+      expect(ascimg_count).toBe(30);
+      var url_count = (stdout.match(/\tURL\t/g) || []).length;
+      expect(url_count).toBe(4);
+      var adr_count = (stdout.match(/\tADR\t/g) || []).length;
+      expect(adr_count).toBe(1);
       var lines_count = (stdout.split("\n")).length;
       expect(lines_count).toBe(6202);
       done();
@@ -54,13 +54,13 @@
     const { execSync } = require('child_process');
     const stdout = execSync('node src/index.js', { input: testInput }).toString();
     
-    // Check that compound emojis are tagged as EMOIMG
-    expect(stdout).toContain('✊🏿\t_\tEMOIMG\tEMOIMG');
-    expect(stdout).toContain('👨‍👨‍👦\t_\tEMOIMG\tEMOIMG');
+    // Check that compound emojis are tagged as EMOIMG in XPOS column only
+    expect(stdout).toContain('✊🏿\t_\t_\tEMOIMG');
+    expect(stdout).toContain('👨‍👨‍👦\t_\t_\tEMOIMG');
     
-    // Count EMOIMG occurrences (should be 2 for each emoji - columns 3 and 4)
+    // Count EMOIMG occurrences (should be 1 per emoji - only in XPOS column)
     var emoimg_count = (stdout.match(/EMOIMG/g) || []).length;
-    expect(emoimg_count).toBe(4); // 2 emojis × 2 columns = 4
+    expect(emoimg_count).toBe(2); // 2 emojis × 1 column = 2
     done();
   });
 
@@ -77,13 +77,13 @@
     const { execSync } = require('child_process');
     const stdout = execSync('node src/index.js', { input: testInput }).toString();
     
-    // Check that Wikipedia emoji templates are tagged as EMOWIKI
-    expect(stdout).toContain('[_EMOJI:{{S|;)}}_]\t_\tEMOWIKI\tEMOWIKI');
-    expect(stdout).toContain('[_EMOJI:{{cool}}_]\t_\tEMOWIKI\tEMOWIKI');
+    // Check that Wikipedia emoji templates are tagged as EMOWIKI in XPOS column only
+    expect(stdout).toContain('[_EMOJI:{{S|;)}}_]\t_\t_\tEMOWIKI');
+    expect(stdout).toContain('[_EMOJI:{{cool}}_]\t_\t_\tEMOWIKI');
     
-    // Count EMOWIKI occurrences (should be 2 for each template - columns 3 and 4)
+    // Count EMOWIKI occurrences (should be 1 per template - only in XPOS column)
     var emowiki_count = (stdout.match(/EMOWIKI/g) || []).length;
-    expect(emowiki_count).toBe(4); // 2 templates × 2 columns = 4
+    expect(emowiki_count).toBe(2); // 2 templates × 1 column = 2
     done();
   });
 });
