Index: indic-ot.c
===================================================================
--- indic-ot.c	(revision 2222)
+++ indic-ot.c	(working copy)
@@ -301,7 +301,7 @@
 	    glong lastConsonant = vmabove - 1;
 	    glong baseLimit = prev;
 	    glong baseConsonant, postBase, postBaseLimit;
-	    gboolean seenVattu, seenBelowBaseForm, supressVattu;
+	    gboolean seenVattu, seenBelowBaseForm, supressVattu, supressPreBaseMatra;
 	    glong bcSpan;
 
 	    /* Check for REPH at front of syllable */
@@ -359,8 +359,13 @@
 		baseConsonant -= 1;
 	    }
 
-	    /* Write Mpre */
-	    writeMpre(&output);
+        if (chars[baseConsonant - 1] == C_SIGN_ZWNJ && indic_ot_is_virama(class_table, chars[baseConsonant - 2])) {
+            supressPreBaseMatra = true;
+        }
+        else {
+            supressPreBaseMatra = false;
+            writeMpre(&output);
+        }
 
 	    /* Write eyelash RA */
 	    /* NOTE: baseLimit == prev + 3 iff eyelash RA present... */
@@ -397,6 +402,10 @@
 
 		writeChar(&output, ch, /*i*/ prev, tag);
 	    }
+        
+        if (supressPreBaseMatra == true) {
+            writeMpre(&output);
+        }
 
 	    bcSpan = baseConsonant + 1;
 
