          *spaceUsed = bamSize;
 diff -rupN -x Xcode -x .git tmp/snap/SNAPLib/BaseAligner.cpp snap/SNAPLib/BaseAligner.cpp
 --- tmp/snap/SNAPLib/BaseAligner.cpp	2015-07-28 15:15:02.000000000 -0400
-+++ snap/SNAPLib/BaseAligner.cpp	2015-07-25 21:10:24.000000000 -0400
-@@ -764,6 +764,11 @@ Return Value:
++++ snap/SNAPLib/BaseAligner.cpp	2015-08-05 11:13:27.000000000 -0400
+@@ -289,7 +289,7 @@ Return Value:
+     primaryResult->score = UnusedScoreValue;
+     primaryResult->status = NotFound;
+ 
+-    unsigned lookupsThisRun = 0;
++    lookupsThisRun = hitsThisRun = 0;
+ 
+     popularSeedsSkipped = 0;
+ 
+@@ -471,6 +471,7 @@ Return Value:
+ 
+         nHashTableLookups++;
+         lookupsThisRun++;
++        hitsThisRun += (nHits[FORWARD] + nHits[RC]);
+ 
+ 
+ #ifdef  _DEBUG
+@@ -764,6 +765,17 @@ Return Value:
                  primaryResult->score = bestScore;
                  if (bestScore <= maxK) {
                      primaryResult->location = bestScoreGenomeLocation;
++					float hitsPerLookup = (float)hitsThisRun / lookupsThisRun;
 +					primaryResult->features.init(bestScore,
 +												 secondBestScore,
 +												 probabilityOfAllCandidates,
 +												 probabilityOfBestCandidate,
-+												 popularSeedsSkipped);
++												 popularSeedsSkipped,
++												 0,
++												 lookupsThisRun,
++												 0,
++												 hitsPerLookup,
++												 0);
                      primaryResult->mapq = computeMAPQ(probabilityOfAllCandidates, probabilityOfBestCandidate, bestScore, popularSeedsSkipped);
                      if (primaryResult->mapq >= MAPQ_LIMIT_FOR_SINGLE_HIT) {
                          primaryResult->status = SingleHit;
+diff -rupN -x Xcode -x .git tmp/snap/SNAPLib/BaseAligner.h snap/SNAPLib/BaseAligner.h
+--- tmp/snap/SNAPLib/BaseAligner.h	2015-07-28 15:15:02.000000000 -0400
++++ snap/SNAPLib/BaseAligner.h	2015-08-05 11:12:27.000000000 -0400
+@@ -136,6 +136,9 @@ private:
+     _int64 nReadsIgnoredBecauseOfTooManyNs;
+     _int64 nIndelsMerged;
+ 
++	unsigned lookupsThisRun;
++	_int64 hitsThisRun;
++
+     //
+     // A bitvector indexed by offset in the read indicating whether this seed is used.
+     // This is here to avoid doing a memory allocation in the aligner.
 diff -rupN -x Xcode -x .git tmp/snap/SNAPLib/ChimericPairedEndAligner.cpp snap/SNAPLib/ChimericPairedEndAligner.cpp
 --- tmp/snap/SNAPLib/ChimericPairedEndAligner.cpp	2015-07-28 15:15:02.000000000 -0400
 +++ snap/SNAPLib/ChimericPairedEndAligner.cpp	2015-08-05 09:03:57.000000000 -0400

         bool alignedAsPair = false) const = 0; 
diff -rupN -x Xcode -x .git tmp/snap/SNAPLib/IntersectingPairedEndAligner.cpp snap/SNAPLib/IntersectingPairedEndAligner.cpp
--- tmp/snap/SNAPLib/IntersectingPairedEndAligner.cpp	2015-07-28 15:15:02.000000000 -0400
+++ snap/SNAPLib/IntersectingPairedEndAligner.cpp	2015-08-04 17:31:35.000000000 -0400
@@ -855,6 +855,11 @@ doneScoring:
         for (unsigned whichRead = 0; whichRead < NUM_READS_PER_PAIR; whichRead++) {
             result->location[whichRead] = bestResultGenomeLocation[whichRead];
             result->direction[whichRead] = bestResultDirection[whichRead];
+			result->features[whichRead].init(bestResultScore[whichRead],
+											 0xffff,
+											 probabilityOfAllPairs,
+											 probabilityOfBestPair,
+											 popularSeedsSkipped[0] + popularSeedsSkipped[1]);
             result->mapq[whichRead] = computeMAPQ(probabilityOfAllPairs, probabilityOfBestPair, bestResultScore[whichRead], popularSeedsSkipped[0] + popularSeedsSkipped[1]);
             result->status[whichRead] = result->mapq[whichRead] > MAPQ_LIMIT_FOR_SINGLE_HIT ? SingleHit : MultipleHits;
             result->score[whichRead] = bestResultScore[whichRead];

                     if (0 == addFrontClipping) {
diff -rupN -x Xcode -x .git tmp/snap/SNAPLib/SAM.cpp snap/SNAPLib/SAM.cpp
--- tmp/snap/SNAPLib/SAM.cpp	2015-07-28 15:15:02.000000000 -0400
+++ snap/SNAPLib/SAM.cpp	2015-08-05 11:25:54.000000000 -0400
@@ -1123,6 +1123,7 @@ SAMFormat::writeRead(
     Read * read,
     AlignmentResult result, 
