diff --git a/libAACenc/src/aacenc_lib.cpp b/libAACenc/src/aacenc_lib.cpp
index e229ed6..dd6767f 100644
--- a/libAACenc/src/aacenc_lib.cpp
+++ b/libAACenc/src/aacenc_lib.cpp
@@ -98,7 +98,7 @@
 /* Encoder library info */
 #define AACENCODER_LIB_VL0 3
 #define AACENCODER_LIB_VL1 4
-#define AACENCODER_LIB_VL2 2
+#define AACENCODER_LIB_VL2 3
 #define AACENCODER_LIB_TITLE "AAC Encoder"
 #define AACENCODER_LIB_BUILD_DATE __DATE__
 #define AACENCODER_LIB_BUILD_TIME __TIME__
diff --git a/libAACenc/src/intensity.cpp b/libAACenc/src/intensity.cpp
index 28e6eed..6d807f7 100644
--- a/libAACenc/src/intensity.cpp
+++ b/libAACenc/src/intensity.cpp
@@ -450,23 +450,24 @@
                                     const INT       maxSfbPerGroup)
 {
   INT sfb,sfboffs, j;
-  INT startIsSfb = 0;
-  INT inIsBlock;
-  INT currentIsSfbCount;
-  FIXP_DBL overallHrrError;
   FIXP_DBL isScaleLast = FL2FXCONST_DBL(0.0f);
-  FIXP_DBL isRegionLoudness;
+  INT isStartValueFound = 0;
 
   for (sfboffs = 0; sfboffs < sfbCnt; sfboffs += sfbPerGroup) {
-    inIsBlock = 0;
-    currentIsSfbCount = 0;
-    overallHrrError = FL2FXCONST_DBL(0.0f);
-    isRegionLoudness = FL2FXCONST_DBL(0.0f);
+    INT startIsSfb = 0;
+    INT inIsBlock = 0;
+    INT currentIsSfbCount = 0;
+    FIXP_DBL overallHrrError = FL2FXCONST_DBL(0.0f);
+    FIXP_DBL isRegionLoudness = FL2FXCONST_DBL(0.0f);
+
     for (sfb = 0; sfb < maxSfbPerGroup; sfb++) {
       if (isMask[sfboffs + sfb] == 1) {
         if (currentIsSfbCount == 0) {
           startIsSfb = sfboffs + sfb;
+        }
+        if (isStartValueFound==0) {
           isScaleLast = realIsScale[sfboffs + sfb];
+          isStartValueFound = 1;
         }
         inIsBlock = 1;
         currentIsSfbCount++;
@@ -510,6 +511,14 @@
           for(j = startIsSfb; j <= sfboffs + sfb; j++) {
             isMask[j] = 0;
           }
+          isScaleLast = FL2FXCONST_DBL(0.0f);
+          isStartValueFound = 0;
+          for (j=0; j < startIsSfb; j++) {
+            if (isMask[j]!=0) {
+              isScaleLast = realIsScale[j];
+              isStartValueFound = 1;
+            }
+          }
         }
         currentIsSfbCount = 0;
         overallHrrError = FL2FXCONST_DBL(0.0f);
diff --git a/libAACenc/src/line_pe.cpp b/libAACenc/src/line_pe.cpp
index e4dc957..f3c0dab 100644
--- a/libAACenc/src/line_pe.cpp
+++ b/libAACenc/src/line_pe.cpp
@@ -184,7 +184,7 @@
          }
          peChanData->sfbNActiveLines[sfbGrp+sfb] = nLines;
       }
-      else if( isBook[sfb] ) {
+      else if( isBook[sfbGrp+sfb] ) {
         /* provide for cost of scale factor for Intensity */
         INT delta = isScale[sfbGrp+sfb] - lastValIs;
         lastValIs = isScale[sfbGrp+sfb];
