diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9f93351..4983134 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,6 @@
 # Changelog
 
-## [1.9-SNAPSHOT] - 2021-09-15
+## [1.9.900] - 2021-09-24
 - for `.*\\.(freq|tsv)(\\.gz)?` input files automatically cumulate frequencies
-- -N option added to sort keys with same frequency numerically
\ No newline at end of file
+- -N option added to sort keys with same frequency numerically
+- --pad option added to optionally add padding symbols at text edges
diff --git a/src/main/java/org/ids_mannheim/PaddedSlidingWindowQueue.java b/src/main/java/org/ids_mannheim/PaddedSlidingWindowQueue.java
new file mode 100644
index 0000000..7c141bd
--- /dev/null
+++ b/src/main/java/org/ids_mannheim/PaddedSlidingWindowQueue.java
@@ -0,0 +1,47 @@
+package org.ids_mannheim;
+
+
+import static org.ids_mannheim.TotalNGrams.logger;
+
+public class PaddedSlidingWindowQueue extends SlidingWindowQueue {
+    public static final String TEXT_END_SYMBOL = "«END»";
+    public static final String TEXT_START_SYMBOL = "«START»";
+    public static final String TEXT_STARTEND_POS = "«STARTEND»";
+    private static String TEXT_START_COMBO, TEXT_END_COMBO;
+    private boolean needsFlush;
+
+    public PaddedSlidingWindowQueue(int size, Increaser flush, boolean with_lemma_and_pos) {
+        super(size, flush, with_lemma_and_pos);
+        if (with_lemma_and_pos) {
+            TEXT_START_COMBO = TEXT_START_SYMBOL + '\t' + TEXT_START_SYMBOL + '\t' + TEXT_STARTEND_POS;
+            TEXT_END_COMBO = TEXT_END_SYMBOL + '\t' + TEXT_END_SYMBOL + '\t' + TEXT_STARTEND_POS;
+        } else {
+            TEXT_START_COMBO = TEXT_START_SYMBOL;
+            TEXT_END_COMBO = TEXT_END_SYMBOL;
+        }
+        logger.info("Using padding.");
+        needsFlush = false;
+    }
+
+    @Override
+    public void reset(int fold) {
+        this.clear();
+        for (int i = 0; i < maxSize; i++)
+            add(TEXT_START_COMBO);
+        this.fold = fold;
+    }
+
+    @Override
+    public void add(String k) {
+        super.add(k);
+        needsFlush = true;
+    }
+
+    @Override
+    public void textBreak() {
+        if (needsFlush)
+            for (int i = 0; i < maxSize; i++)
+                add(TEXT_END_COMBO);
+    }
+
+}
diff --git a/src/main/java/org/ids_mannheim/SlidingWindowQueue.java b/src/main/java/org/ids_mannheim/SlidingWindowQueue.java
index 93acd58..32e0f60 100644
--- a/src/main/java/org/ids_mannheim/SlidingWindowQueue.java
+++ b/src/main/java/org/ids_mannheim/SlidingWindowQueue.java
@@ -3,17 +3,15 @@
 import java.util.LinkedList;
 
 public class SlidingWindowQueue extends LinkedList {
-    private final int maxSize;
-    private final Increaser flush;
+    final int maxSize;
+    final Increaser flush;
+    final boolean with_lemma_and_pos;
     public int fold;
 
-    interface Increaser {
-        void accept(String s);
-    }
-
-    public SlidingWindowQueue(int size, Increaser flush) {
+    public SlidingWindowQueue(int size, Increaser flush, boolean with_lemma_and_pos) {
         this.maxSize = size;
         this.flush = flush;
+        this.with_lemma_and_pos = with_lemma_and_pos;
     }
 
     public void add(String k) {
@@ -28,4 +26,11 @@
         this.clear();
         this.fold = fold;
     }
+
+    public void textBreak() {
+    }
+
+    interface Increaser {
+        void accept(String s);
+    }
 }
diff --git a/src/main/java/org/ids_mannheim/TotalNGrams.java b/src/main/java/org/ids_mannheim/TotalNGrams.java
index 86932d4..ee1b665 100644
--- a/src/main/java/org/ids_mannheim/TotalNGrams.java
+++ b/src/main/java/org/ids_mannheim/TotalNGrams.java
@@ -92,6 +92,11 @@
             "--numeric-secondary-sort"}, description = "Sort entries with same frequency numerically  (default: ${DEFAULT-VALUE})")
     boolean numericSecondarySort = false;
 
+    @SuppressWarnings("CanBeFinal")
+    @CommandLine.Option(names = {
+            "--pad"}, description = "Add padding " + PaddedSlidingWindowQueue.TEXT_START_SYMBOL + " and " + PaddedSlidingWindowQueue.TEXT_END_SYMBOL + " symbols at text edges  (default: ${DEFAULT-VALUE})")
+    boolean addPadding = false;
+
     private Progressbar etaPrinter;
 
     public TotalNGrams() {
@@ -164,7 +169,7 @@
         int threads = Math.min(max_threads, inputFiles.size());
         logger.info("Processing fold " + fold + "/" + FOLDS);
         logger.info("Using " + threads + " threads");
-        IntStream.range(0, threads).forEach(unused -> es.execute(new Worker(queue, inputFiles, ngram_size, fold, FOLDS, map, with_lemma_and_pos, downcase_tokens, workerNodePool, etaPrinter, logger)));
+        IntStream.range(0, threads).forEach(unused -> es.execute(new Worker(queue, inputFiles, ngram_size, fold, FOLDS, map, with_lemma_and_pos, downcase_tokens, workerNodePool, etaPrinter, logger, addPadding)));
         queue.addAll(IntStream.range(0, inputFiles.size()).boxed().collect(Collectors.toList()));
         IntStream.range(0, threads).forEach(unused -> {
             try {
diff --git a/src/main/java/org/ids_mannheim/Worker.java b/src/main/java/org/ids_mannheim/Worker.java
index ca7f27c..2f6b32b 100644
--- a/src/main/java/org/ids_mannheim/Worker.java
+++ b/src/main/java/org/ids_mannheim/Worker.java
@@ -29,13 +29,14 @@
     private final WorkerNodePool pool;
     private final boolean with_lemma_and_pos;
     private final boolean downcase_tokens;
+    private final boolean addPadding;
 
     private final DeterministicRandomProvider deterministicRandomProvider;
 
     public Worker(BlockingQueue<Integer> queue, ArrayList<String> fnames, int ngram_size, int target_fold, int folds,
                   ConcurrentHashMap<String, AtomicInteger> map,
                   boolean with_lemma_and_pos, boolean downcase_tokens, WorkerNodePool pool,
-                  Progressbar etaPrinter, Logger logger) {
+                  Progressbar etaPrinter, Logger logger, boolean addPadding) {
         this.queue = queue;
         this.fnames = fnames;
         this.map = map;
@@ -47,6 +48,7 @@
         this.logger = logger;
         this.deterministicRandomProvider = new DeterministicRandomProvider(folds);
         this.downcase_tokens = downcase_tokens;
+        this.addPadding = addPadding;
     }
 
     @Override
@@ -55,7 +57,8 @@
             int index = queue.take();
             int retries = MAX_RETRIES;
             int texts = 0;
-            SlidingWindowQueue slidingWindowQueue = new SlidingWindowQueue(ngram_size, s -> FoldedEntry.incr(map, s));
+            SlidingWindowQueue slidingWindowQueue = (addPadding ? new PaddedSlidingWindowQueue(ngram_size, s -> FoldedEntry.incr(map, s), with_lemma_and_pos) :
+                    new SlidingWindowQueue(ngram_size, s -> FoldedEntry.incr(map, s), with_lemma_and_pos));
             while (index >= 0) {
                 String fname = fnames.get(index);
                 File current_file = new File(fname);
@@ -113,6 +116,7 @@
                     if (line.startsWith("#")) {
                         Matcher matcher = new_text_pattern.matcher(line);
                         if (matcher.find()) {
+                            slidingWindowQueue.textBreak();
                             fold = deterministicRandomProvider.getFoldFromTextID(matcher.group(1)) + 1;
                             texts++;
                             if (fold == target_fold) {
@@ -124,7 +128,7 @@
                         if (strings.length < 4) {
                             continue;
                         }
-                        assert strings.length == 10 : "CoNLL-U Format must have 10 columns";
+                        assert strings.length == 10 : "Error: CoNLL-U Format must have 10 columns in line \""+line+"\"";
                         String token = ( downcase_tokens?
                                 Utils.unEscapeEntities(strings[1]).toLowerCase(Locale.ROOT) :
                                 Utils.unEscapeEntities(strings[1]));
@@ -156,6 +160,7 @@
                         }
                     }
                 }
+                slidingWindowQueue.textBreak();
                 pool.markFree(poolIndex);
                 if (texts > 0) {
                     logger.info(pool.getHost(poolIndex) + " finished " + fname + " with " + texts + " texts");
diff --git a/src/test/java/org/ids_mannheim/WorkerTest.java b/src/test/java/org/ids_mannheim/WorkerTest.java
index c4d8758..5e0623f 100644
--- a/src/test/java/org/ids_mannheim/WorkerTest.java
+++ b/src/test/java/org/ids_mannheim/WorkerTest.java
@@ -6,6 +6,9 @@
 import org.junit.jupiter.api.Test;
 
 import java.io.*;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.Objects;
@@ -13,10 +16,12 @@
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Logger;
+import java.util.stream.Collectors;
 
 import static org.junit.jupiter.api.Assertions.*;
 
 class WorkerTest {
+    public static final String splitFreqlistRegex = "\\t(?=[0-9]+$)";
     private ByteArrayOutputStream errContent;
     private final PrintStream originalErr = System.err;
     Worker worker;
@@ -68,7 +73,7 @@
                 false,
                 new WorkerNodePool(""),
                 new Progressbar(tempFile.length()),
-                Logger.getLogger(TotalNGrams.class.getSimpleName()));
+                Logger.getLogger(TotalNGrams.class.getSimpleName()), false);
 
         queue.add(0);
         queue.add(-1);
@@ -118,7 +123,8 @@
                 true,
                 new WorkerNodePool(""),
                 new Progressbar(tempFile.length()),
-                Logger.getLogger(TotalNGrams.class.getSimpleName()));
+                Logger.getLogger(TotalNGrams.class.getSimpleName()),
+                false);
 
         queue.add(0);
         queue.add(-1);
@@ -163,7 +169,8 @@
                 false,
                 new WorkerNodePool(""),
                 new Progressbar(tempFile.length()),
-                Logger.getLogger(TotalNGrams.class.getSimpleName()));
+                Logger.getLogger(TotalNGrams.class.getSimpleName()),
+                false);
 
         queue.add(0);
         queue.add(-1);
@@ -208,7 +215,8 @@
                 false,
                 new WorkerNodePool(""),
                 new Progressbar(tempFile.length()),
-                Logger.getLogger(TotalNGrams.class.getSimpleName()));
+                Logger.getLogger(TotalNGrams.class.getSimpleName()),
+                false);
 
         queue.add(0);
         queue.add(-1);
@@ -216,4 +224,53 @@
         gold.forEach((key, value) -> assertEquals(value, map.get(key).intValue()));
     }
 
+    @Test
+    void paddingWorks() throws IOException {
+        File tempFile = File.createTempFile("simple", ".conllu");
+        tempFile.deleteOnExit();
+        try (FileOutputStream out = new FileOutputStream(tempFile)) {
+            IOUtils.copy(Objects.requireNonNull(Thread.currentThread().getContextClassLoader()
+                    .getResourceAsStream("simple.conllu")), out);
+        }
+
+        for (boolean with_lemma_and_pos : new boolean[]{false, true}) {
+            for (int n = 1; n <= 3; n++) {
+                ArrayList<String> fnames = new ArrayList<>();
+                fnames.add(tempFile.getAbsolutePath());
+
+                File tempFreqFile = File.createTempFile("simple", ".freq");
+                tempFreqFile.deleteOnExit();
+                try (FileOutputStream out = new FileOutputStream(tempFreqFile)) {
+                    IOUtils.copy(Objects.requireNonNull(Thread.currentThread().getContextClassLoader()
+                            .getResourceAsStream("simple_" + n + (with_lemma_and_pos ? "lp" : "") + "gram_padded.freq")), out);
+                }
+
+                Path path = FileSystems.getDefault().getPath(tempFreqFile.getAbsolutePath());
+                Map<String, Integer> gold = Files.lines(path)
+                        .filter(s -> s.matches(splitFreqlistRegex))
+                        .collect(Collectors.toMap(k -> k.split(splitFreqlistRegex)[0], v -> Integer.parseInt(v.split(splitFreqlistRegex)[1])));
+
+                map = new ConcurrentHashMap<>();
+                LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<>(2);
+                worker = new Worker(
+                        queue,
+                        fnames,
+                        n,
+                        1,
+                        1,
+                        map,
+                        with_lemma_and_pos,
+                        false,
+                        new WorkerNodePool(""),
+                        new Progressbar(tempFile.length()),
+                        Logger.getLogger(TotalNGrams.class.getSimpleName()),
+                        true);
+
+                queue.add(0);
+                queue.add(-1);
+                worker.run();
+                gold.forEach((key, value) -> assertEquals(value, map.get(key).intValue()));
+            }
+        }
+    }
 }
diff --git a/src/test/resources/simple.conllu b/src/test/resources/simple.conllu
new file mode 100644
index 0000000..2e52539
--- /dev/null
+++ b/src/test/resources/simple.conllu
@@ -0,0 +1,17 @@
+# text_id = TST_TST.00000
+1	ich	ich	PPER	PPER	_	_	_	_	1
+2	bin	sein	VAFIN	VAFIN	_	_	_	_	1.000000
+3	alex	alex	NE	NE	_	_	_	_	0.565630
+4	.	.	$.	$.	_	_	_	_	1.000000
+
+# text_id = TST_TST.00001
+1	alex	alex	NE	NE	_	_	_	_	0.565630
+2	bin	sein	VAFIN	VAFIN	_	_	_	_	1.000000
+3	ich	ich	PPER	PPER	_	_	_	_	1
+4	.	.	$.	$.	_	_	_	_	1.000000
+
+# text_id = TST_TST.00002
+1	ich	ich	PPER	PPER	_	_	_	_	1
+2	heiße	heißen	VAFIN	VAFIN	_	_	_	_	1.000000
+3	alex	alex	NE	NE	_	_	_	_	0.565630
+4	.	.	$.	$.	_	_	_	_	1.000000
diff --git a/src/test/resources/simple_1gram_padded.freq b/src/test/resources/simple_1gram_padded.freq
new file mode 100644
index 0000000..54522cb
--- /dev/null
+++ b/src/test/resources/simple_1gram_padded.freq
@@ -0,0 +1,7 @@
+.	3
+«END»	3
+«START»	3
+alex	3
+ich	3
+bin	2
+heiße	1
diff --git a/src/test/resources/simple_1lpgram_padded.freq b/src/test/resources/simple_1lpgram_padded.freq
new file mode 100644
index 0000000..ff8c4f7
--- /dev/null
+++ b/src/test/resources/simple_1lpgram_padded.freq
@@ -0,0 +1,7 @@
+.	.	$.	3
+alex	alex	NE	3
+ich	ich	PPER	3
+«END»	«END»	«STARTEND»	3
+«START»	«START»	«STARTEND»	3
+bin	sein	VAFIN	2
+heiße	heißen	VAFIN	1
diff --git a/src/test/resources/simple_2gram_padded.freq b/src/test/resources/simple_2gram_padded.freq
new file mode 100644
index 0000000..ba04a3a
--- /dev/null
+++ b/src/test/resources/simple_2gram_padded.freq
@@ -0,0 +1,13 @@
+.	«END»	3
+«END»	«END»	3
+«START»	«START»	3
+«START»	ich	2
+alex	.	2
+«START»	alex	1
+alex	bin	1
+bin	alex	1
+bin	ich	1
+heiße	alex	1
+ich	.	1
+ich	bin	1
+ich	heiße	1
diff --git a/src/test/resources/simple_2lpgram_padded.freq b/src/test/resources/simple_2lpgram_padded.freq
new file mode 100644
index 0000000..7b1bd84
--- /dev/null
+++ b/src/test/resources/simple_2lpgram_padded.freq
@@ -0,0 +1,13 @@
+.	.	$.	«END»	«END»	«STARTEND»	3
+«END»	«END»	«STARTEND»	«END»	«END»	«STARTEND»	3
+«START»	«START»	«STARTEND»	«START»	«START»	«STARTEND»	3
+alex	alex	NE	.	.	$.	2
+«START»	«START»	«STARTEND»	ich	ich	PPER	2
+alex	alex	NE	bin	sein	VAFIN	1
+bin	sein	VAFIN	alex	alex	NE	1
+bin	sein	VAFIN	ich	ich	PPER	1
+heiße	heißen	VAFIN	alex	alex	NE	1
+ich	ich	PPER	.	.	$.	1
+ich	ich	PPER	bin	sein	VAFIN	1
+ich	ich	PPER	heiße	heißen	VAFIN	1
+«START»	«START»	«STARTEND»	alex	alex	NE	1
diff --git a/src/test/resources/simple_3gram_padded.freq b/src/test/resources/simple_3gram_padded.freq
new file mode 100644
index 0000000..f54eede
--- /dev/null
+++ b/src/test/resources/simple_3gram_padded.freq
@@ -0,0 +1,16 @@
+.	«END»	«END»	3
+«END»	«END»	«END»	3
+«START»	«START»	«START»	3
+«START»	«START»	ich	2
+alex	.	«END»	2
+«START»	«START»	alex	1
+«START»	alex	bin	1
+«START»	ich	bin	1
+«START»	ich	heiße	1
+alex	bin	ich	1
+bin	alex	.	1
+bin	ich	.	1
+heiße	alex	.	1
+ich	.	«END»	1
+ich	bin	alex	1
+ich	heiße	alex	1
diff --git a/src/test/resources/simple_3lpgram_padded.freq b/src/test/resources/simple_3lpgram_padded.freq
new file mode 100644
index 0000000..19b899c
--- /dev/null
+++ b/src/test/resources/simple_3lpgram_padded.freq
@@ -0,0 +1,16 @@
+.	.	$.	«END»	«END»	«STARTEND»	«END»	«END»	«STARTEND»	3
+«END»	«END»	«STARTEND»	«END»	«END»	«STARTEND»	«END»	«END»	«STARTEND»	3
+«START»	«START»	«STARTEND»	«START»	«START»	«STARTEND»	«START»	«START»	«STARTEND»	3
+alex	alex	NE	.	.	$.	«END»	«END»	«STARTEND»	2
+«START»	«START»	«STARTEND»	«START»	«START»	«STARTEND»	ich	ich	PPER	2
+alex	alex	NE	bin	sein	VAFIN	ich	ich	PPER	1
+bin	sein	VAFIN	alex	alex	NE	.	.	$.	1
+bin	sein	VAFIN	ich	ich	PPER	.	.	$.	1
+heiße	heißen	VAFIN	alex	alex	NE	.	.	$.	1
+ich	ich	PPER	.	.	$.	«END»	«END»	«STARTEND»	1
+ich	ich	PPER	bin	sein	VAFIN	alex	alex	NE	1
+ich	ich	PPER	heiße	heißen	VAFIN	alex	alex	NE	1
+«START»	«START»	«STARTEND»	alex	alex	NE	bin	sein	VAFIN	1
+«START»	«START»	«STARTEND»	ich	ich	PPER	bin	sein	VAFIN	1
+«START»	«START»	«STARTEND»	ich	ich	PPER	heiße	heißen	VAFIN	1
+«START»	«START»	«STARTEND»	«START»	«START»	«STARTEND»	alex	alex	NE	1
