Rectangles of integer coordinates exclude the bottom right corner in PixInsight/PCL/PJSR. This means that a rectangle with coordinates:
x0 = 100
y0 = 200
x1 = 300
y1 = 400
defines the rectangular region from {100,200} to {299,399} both points included. The row at y=400 and the column at x=300 are both excluded.
The advantage of this convention is that the width and height of a rectangle are equal to x1-x0 and y1-y0, respectively.
Note that for rectangles of real coordinates the same rule applies, but the bottom right corner is always included. This is just a consequence of the continuous nature of real coordinates, as opposed to the discrete nature of integer coordinates.
On the other hand, note that GenericRectangle's coordinate constructor is:
template <typename T, typename T1>
GenericRectangle<T>::GenericRectangle( T1 left, T1 top, T1 right, T1 bottom );
that is, it doesn't take width and height arguments, but four coordinate arguments. There is a constructor from two dimensions, namely:
template <typename T>
GenericRectangle<T>::GenericRectangle( T width, T height );
which creates a rectangle where x0=y0=0, x1=width and y1=height, that is, a rectangle anchored at the origin.