diff --git a/pub/CHANGELOG b/pub/CHANGELOG
index a43c5595ee983c1e050faaaa7654b898acf181a1..bc2c30ddfef151c46a57421c3000b4e12b4e492e 100644
--- a/pub/CHANGELOG
+++ b/pub/CHANGELOG
@@ -1,7 +1,14 @@
+Release 2.3.3c:
+
+- Bug fix:
+  - msa: forbid breakpoints that exceed nJ
+
 Release 2.3.3b of 12jan16:
 
-- Bugfix (plot::determineYrange was broken)
-- Further refactoring: namespaces -> singleton classes SMem, SFSel
+- Bug fix:
+  - plot::determineYrange was broken
+- Refactoring:
+  - namespaces -> singleton classes SMem, SFSel
 
 Release 2.3.3a of 7jan16:
 
diff --git a/pub/lib/manip.cpp b/pub/lib/manip.cpp
index f6cdab954526e82faff07e1d9331fe12df9e2a3f..f70c2dfb6556abf3b879b8e1329562751928961a 100644
--- a/pub/lib/manip.cpp
+++ b/pub/lib/manip.cpp
@@ -476,6 +476,9 @@ void NManip::slices_rebin()
         // JSel.evaluate( 0, fin->nJ()-1 );
         if ( JSel.size()<1 || JSel[0]!=0 )
             throw S("spectrum selection must contain 0");
+        if ( JSel.back()>= fin->nJ() )
+            throw "Invalid breakpoint "+S(JSel.back())+": file "+S(fiter.k())+
+                " has only "+S(fin->nJ())+" slices";
         fout->log_action("msa " + triv::indices_to_s(JSel));
         for ( int iv=0; iv<JSel.size(); iv++ ) {
             int ji = JSel[iv];