diff --git a/collocatordb.cc b/collocatordb.cc
index bf75f76..bad99c3 100644
--- a/collocatordb.cc
+++ b/collocatordb.cc
@@ -332,6 +332,7 @@
     virtual void inc(const uint32_t w1, const uint32_t w2, const uint8_t dist);
     void dump(uint32_t w1, uint32_t w2, int8_t dist);
     vector<Collocator> get_collocators(uint32_t w1);
+    vector<Collocator> get_collocators(uint32_t w1, uint32_t max_w2);
     void dumpSparseLlr(uint32_t w1, uint32_t min_cooccur);
     vector<Collocator> get_collocators_avg(uint32_t w1);
     string collocators2json(vector<Collocator> collocators);
@@ -564,16 +565,17 @@
 		return collocators;
   }
 
-	std::vector<Collocator> rocksdb::CollocatorDB::get_collocators(uint32_t w1) {
+
+	std::vector<Collocator> rocksdb::CollocatorDB::get_collocators(uint32_t w1, uint32_t max_w2) {
 		std::vector<Collocator> collocators;
     uint64_t w2, last_w2 = 0xffffffffffffffff;
-    uint64_t maxv = 0, left = 0, right = 0, total_w1 = 0;
+    uint64_t maxv = 0, left = 0, right = 0;
     const double window_size = 1;
     for ( auto it = std::unique_ptr<CollocatorIterator>(SeekIterator(w1, 0, 0)); it->isValid(); it->Next()) {
       uint64_t value = it->intValue(),
         key = it->intKey();
-      w2 = W2(key);
-      total_w1 += value;
+      if((w2 = W2(key)) > max_w2)
+        continue;
       if(last_w2 == 0xffffffffffffffff) last_w2 = w2;
       if (w2 != last_w2) {
 				double pmi = ca_pmi(_vocab[w1].freq, _vocab[last_w2].freq, maxv, total, window_size);
@@ -624,6 +626,10 @@
 		return collocators;
   }
 
+	std::vector<Collocator> rocksdb::CollocatorDB::get_collocators(uint32_t w1) {
+    return get_collocators(w1, UINT32_MAX);
+  }
+
   void rocksdb::CollocatorDB::dumpSparseLlr(uint32_t w1, uint32_t min_cooccur) {
 		std::vector<Collocator> collocators;
     std::stringstream stream;
diff --git a/collocatordb.h b/collocatordb.h
index 33cb1b8..ad9f0c6 100644
--- a/collocatordb.h
+++ b/collocatordb.h
@@ -44,6 +44,7 @@
 			public:
         std::string getWord(uint32_t w1);
         std::vector<Collocator> get_collocators(uint32_t w1);
+        std::vector<Collocator> get_collocators(uint32_t w1, uint32_t max_w2);
         void dumpSparseLlr(uint32_t w1, uint32_t min_cooccur);
         CollocatorDB(const char *db_name, const bool read_only);
         void inc(const uint32_t w1, const uint32_t w2, const uint8_t dist);
